Mexc - Stuck on "Waiting for close order to be filled" when market order is partially filled

Describe the bug
When testing mexc on a separate PR, observed this behavior after we had a partial fill on a market order to close a position executor on pmm_simple controller v2 strategy

# Creating / Created sell order HUMBOTSFOUT61d5959b222d80b6efd52
2024-07-16 16:44:14,404 - 27557 - hummingbot.strategy.script_strategy_base - INFO - Creating FIRO-USDT sell order: price: 1.267757250000000000131296016 amount: 11.83191813732479147600734785.
2024-07-16 16:44:14,512 - 27557 - hummingbot.connector.client_order_tracker - INFO - Created LIMIT SELL order HUMBOTSFOUT61d5959b222d80b6efd52 for 11.83 FIRO-USDT.
2024-07-16 16:44:14,516 - 27557 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "type": "OrderType.LIMIT", "trading_pair": "FIRO-USDT", "amount": "11.83", "price": "1.2677", "order_id": "HUMBOTSFOUT61d5959b222d80b6efd52", "creation_timestamp":<PHONE_NUMBER>.0, "exchange_order_id": "C02__441816317650128900049", "leverage": 1, "position": "NIL", "event_name": "SellOrderCreatedEvent", "event_source": "mexc"}
2024-07-16 16:49:24,801 - 27557 - hummingbot.strategy.script_strategy_base - INFO - (FIRO-USDT) Canceling the limit order HUMBOTBFOUT61d5900e076160b6efd52. [clock=2024-07-16 08:49:24+00:00]
2024-07-16 16:49:25,086 - 27557 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "order_id": "HUMBOTBFOUT61d5900e076160b6efd52", "exchange_order_id": "C02__441810067537412096049", "event_name": "OrderCancelledEvent", "event_source": "mexc"}
2024-07-16 16:49:25,100 - 27557 - hummingbot.connector.client_order_tracker - INFO - Successfully canceled order HUMBOTBFOUT61d5900e076160b6efd52.
2024-07-16 16:49:25,805 - 27557 - hummingbot.strategy.script_strategy_base - INFO - Creating FIRO-USDT buy order: price: 1.252605499999999999868969397 amount: 11.97503922823267182011343285.
2024-07-16 16:49:26,044 - 27557 - hummingbot.connector.client_order_tracker - INFO - Created LIMIT BUY order HUMBOTBFOUT61d596c41ba760b6efd52 for 11.97 FIRO-USDT.
2024-07-16 16:49:26,044 - 27557 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "type": "OrderType.LIMIT", "trading_pair": "FIRO-USDT", "amount": "11.97", "price": "1.2526", "order_id": "HUMBOTBFOUT61d596c41ba760b6efd52", "creation_timestamp":<PHONE_NUMBER>.0, "exchange_order_id": "C02__441817623773179904049", "leverage": 1, "position": "NIL", "event_name": "BuyOrderCreatedEvent", "event_source": "mexc"}

# Filled sell order HUMBOTSFOUT61d5959b222d80b6efd52
2024-07-16 16:59:55,108 - 27557 - hummingbot.connector.client_order_tracker - INFO - The SELL order HUMBOTSFOUT61d5959b222d80b6efd52 amounting to 11.83/11.83 FIRO has been filled.
2024-07-16 16:59:55,110 - 27557 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "order_id": "HUMBOTSFOUT61d5959b222d80b6efd52", "trading_pair": "FIRO-USDT", "trade_type": "TradeType.SELL", "order_type": "OrderType.LIMIT", "price": "1.2677", "amount": "11.83", "trade_fee": {"percent": "0", "percent_token": "USDT", "flat_fees": [{"token": "USDT", "amount": "0"}]}, "exchange_trade_id": "441816317650128900X1", "exchange_order_id": "C02__441816317650128900049", "leverage": 1, "position": "NIL", "event_name": "OrderFilledEvent", "event_source": "mexc"}
2024-07-16 16:59:55,130 - 27557 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "order_id": "HUMBOTSFOUT61d5959b222d80b6efd52", "base_asset": "FIRO", "quote_asset": "USDT", "base_asset_amount": "11.83", "quote_asset_amount": "14.996891", "order_type": "OrderType.LIMIT", "exchange_order_id": "C02__441816317650128900049", "event_name": "SellOrderCompletedEvent", "event_source": "mexc"}
2024-07-16 16:59:55,136 - 27557 - hummingbot.connector.client_order_tracker - INFO - SELL order HUMBOTSFOUT61d5959b222d80b6efd52 completely filled.

# Creating / Created limit buy close order HUMBOTBFOUT61d5991d020920b6efd52
# Creating / Created market buy close order HUMBOTBFOUT61d59c8a7f1fb0b6efd52
2024-07-16 16:59:55,893 - 27557 - hummingbot.strategy.script_strategy_base - INFO - Creating FIRO-USDT buy order: price: 1.255023 amount: 11.83.
2024-07-16 16:59:55,999 - 27557 - hummingbot.connector.client_order_tracker - INFO - Created LIMIT BUY order HUMBOTBFOUT61d5991d020920b6efd52 for 11.83 FIRO-USDT.
2024-07-16 16:59:55,999 - 27557 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "type": "OrderType.LIMIT", "trading_pair": "FIRO-USDT", "amount": "11.83", "price": "1.2550", "order_id": "HUMBOTBFOUT61d5991d020920b6efd52", "creation_timestamp":<PHONE_NUMBER>.0, "exchange_order_id": "C02__441820266574757888049", "leverage": 1, "position": "NIL", "event_name": "BuyOrderCreatedEvent", "event_source": "mexc"}
2024-07-16 17:14:25,418 - 27557 - hummingbot.connector.exchange.mexc.mexc_api_user_stream_data_source.MexcAPIUserStreamDataSource - WARNING - The websocket connection was closed (The WS connection was closed unexpectedly. Close code = 1006 msg data: 0)
2024-07-16 17:14:30,538 - 27557 - hummingbot.connector.exchange.mexc.mexc_api_user_stream_data_source.MexcAPIUserStreamDataSource - INFO - Successfully obtained listen key 9f0d6d3867c186ddcf1c331aeb9c5704bb30fa555fabaf6be094791381f4fd6c
2024-07-16 17:14:31,160 - 27557 - hummingbot.connector.exchange.mexc.mexc_api_user_stream_data_source.MexcAPIUserStreamDataSource - INFO - Subscribed to private order changes and balance updates channels...
2024-07-16 17:15:16,006 - 27557 - hummingbot.strategy.script_strategy_base - INFO - Creating FIRO-USDT buy order: price: NaN amount: 11.83.
2024-07-16 17:15:16,009 - 27557 - hummingbot.strategy.script_strategy_base - INFO - (FIRO-USDT) Canceling the limit order HUMBOTBFOUT61d5991d020920b6efd52. [clock=2024-07-16 09:15:15+00:00]
2024-07-16 17:15:16,146 - 27557 - hummingbot.connector.client_order_tracker - INFO - Created MARKET BUY order HUMBOTBFOUT61d59c8a7f1fb0b6efd52 for 11.83 FIRO-USDT.
2024-07-16 17:15:16,148 - 27557 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "type": "OrderType.MARKET", "trading_pair": "FIRO-USDT", "amount": "11.83", "price": "NaN", "order_id": "HUMBOTBFOUT61d59c8a7f1fb0b6efd52", "creation_timestamp":<PHONE_NUMBER>.0, "exchange_order_id": "C02__441824125913260032049", "leverage": 1, "position": "NIL", "event_name": "BuyOrderCreatedEvent", "event_source": "mexc"}
2024-07-16 17:15:16,208 - 27557 - hummingbot.connector.client_order_tracker - INFO - The BUY order HUMBOTBFOUT61d59c8a7f1fb0b6efd52 amounting to 11.3/11.83 FIRO has been filled.
2024-07-16 17:15:16,209 - 27557 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "order_id": "HUMBOTBFOUT61d59c8a7f1fb0b6efd52", "trading_pair": "FIRO-USDT", "trade_type": "TradeType.BUY", "order_type": "OrderType.MARKET", "price": "1.268", "amount": "11.3", "trade_fee": {"percent": "0", "percent_token": "USDT", "flat_fees": [{"token": "USDT", "amount": "0"}]}, "exchange_trade_id": "441824125913260032X1", "exchange_order_id": "C02__441824125913260032049", "leverage": 1, "position": "NIL", "event_name": "OrderFilledEvent", "event_source": "mexc"}
2024-07-16 17:15:16,672 - 27557 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "order_id": "HUMBOTBFOUT61d5991d020920b6efd52", "exchange_order_id": "C02__441820266574757888049", "event_name": "OrderCancelledEvent", "event_source": "mexc"}
2024-07-16 17:15:16,678 - 27557 - hummingbot.connector.client_order_tracker - INFO - Successfully canceled order HUMBOTBFOUT61d5991d020920b6efd52.
# Position executor ended here using closeType.LIMIT

# Observed that the position executor was trying to complete a close order on an order amount of 11.3
# 11.3 was successfully completed here 2024-07-16 17:15:16,208

2024-07-16 17:15:17,011 - 27557 - hummingbot.strategy.script_strategy_base - INFO - Creating FIRO-USDT sell order: price: 1.268862750000000000131410508 amount: 11.82160954760473502626388574.
2024-07-16 17:15:17,015 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:17,138 - 27557 - hummingbot.connector.client_order_tracker - INFO - Created LIMIT SELL order HUMBOTSFOUT61d59c8b7414d0b6efd52 for 11.82 FIRO-USDT.
2024-07-16 17:15:17,144 - 27557 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "type": "OrderType.LIMIT", "trading_pair": "FIRO-USDT", "amount": "11.82", "price": "1.2688", "order_id": "HUMBOTSFOUT61d59c8b7414d0b6efd52", "creation_timestamp":<PHONE_NUMBER>.0, "exchange_order_id": "C02__441824130061418496049", "leverage": 1, "position": "NIL", "event_name": "SellOrderCreatedEvent", "event_source": "mexc"}
2024-07-16 17:15:19,021 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:21,026 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:21,157 - 27557 - hummingbot.connector.client_order_tracker - WARNING - The order fill updates did not arrive on time for HUMBOTBFOUT61d59c8a7f1fb0b6efd52. The complete update will be processed with incomplete information.
2024-07-16 17:15:21,158 - 27557 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "order_id": "HUMBOTBFOUT61d59c8a7f1fb0b6efd52", "base_asset": "FIRO", "quote_asset": "USDT", "base_asset_amount": "11.3", "quote_asset_amount": "14.3284", "order_type": "OrderType.MARKET", "exchange_order_id": "C02__441824125913260032049", "event_name": "BuyOrderCompletedEvent", "event_source": "mexc"}
2024-07-16 17:15:21,163 - 27557 - hummingbot.connector.client_order_tracker - INFO - BUY order HUMBOTBFOUT61d59c8a7f1fb0b6efd52 completely filled.
2024-07-16 17:15:23,044 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:25,095 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:27,097 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:29,102 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:31,103 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:33,105 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:35,108 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:37,110 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:39,111 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:41,131 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:43,134 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:45,145 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:47,150 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:49,156 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:51,161 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:53,169 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:55,174 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:57,187 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:15:59,192 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:16:01,202 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:16:03,209 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:16:05,267 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:16:07,270 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:16:09,275 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:16:11,290 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:16:13,295 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:16:15,296 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:16:17,302 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:16:19,305 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:16:21,308 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:16:23,316 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:16:25,337 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83
2024-07-16 17:16:27,346 - 27557 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83

2024-07-16 17:15:16 Observed that market order was created on amount 11.83
2024-07-16 17:15:16 Market order was completed however it was partial filled 11.3/11.83
This resulted to the script to spam Waiting for close order to be filled --> Filled amount: 11.3 | Open amount: 11.83

Initiated stop command however it kept on happening every tick

Steps to reproduce
Setup simple pmm controller using mexc
Release version
dev-2.0.1
Type of installation
Source
Attach required files
logs_conf_v2_with_controllers_1.log
conf_market_making.pmm_simple_1.yml.zip

When testing another PR, got this reproduced
# Creating / Created sell order HUMBOTSFOUT61d933e3fb8d2021dd7ab
2024-07-19 13:48:22,023 - 64580 - hummingbot.strategy.script_strategy_base - INFO - Creating FIRO-USDT buy order: price: 1.291831999999999999783131810 amount: 9.676180803695836611957635217.
2024-07-19 13:48:22,025 - 64580 - hummingbot.strategy.script_strategy_base - INFO - Creating FIRO-USDT sell order: price: 1.312668000000000000216868190 amount: 9.522590632208601107008667085.
2024-07-19 13:48:22,443 - 64580 - hummingbot.connector.client_order_tracker - INFO - Created LIMIT SELL order HUMBOTSFOUT61d933e3fb8d2021dd7ab for 9.52 FIRO-USDT.
2024-07-19 13:48:22,443 - 64580 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "type": "OrderType.LIMIT", "trading_pair": "FIRO-USDT", "amount": "9.52", "price": "1.3126", "order_id": "HUMBOTSFOUT61d933e3fb8d2021dd7ab", "creation_timestamp":<PHONE_NUMBER>.0, "exchange_order_id": "C02__442859222808420353049", "leverage": 1, "position": "NIL", "event_name": "SellOrderCreatedEvent", "event_source": "mexc"}
2024-07-19 13:48:22,576 - 64580 - hummingbot.connector.client_order_tracker - INFO - Created LIMIT BUY order HUMBOTBFOUT61d933e3fb3df021dd7ab for 9.67 FIRO-USDT.
2024-07-19 13:48:22,576 - 64580 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "type": "OrderType.LIMIT", "trading_pair": "FIRO-USDT", "amount": "9.67", "price": "1.2918", "order_id": "HUMBOTBFOUT61d933e3fb3df021dd7ab", "creation_timestamp":<PHONE_NUMBER>.0, "exchange_order_id": "C02__442859222804234240049", "leverage": 1, "position": "NIL", "event_name": "BuyOrderCreatedEvent", "event_source": "mexc"}
2024-07-19 14:12:07,473 - 64580 - hummingbot.connector.client_order_tracker - INFO - The SELL order HUMBOTSFOUT61d933e3fb8d2021dd7ab amounting to 9.52/9.52 FIRO has been filled.
2024-07-19 14:12:07,475 - 64580 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "order_id": "HUMBOTSFOUT61d933e3fb8d2021dd7ab", "trading_pair": "FIRO-USDT", "trade_type": "TradeType.SELL", "order_type": "OrderType.LIMIT", "price": "1.3126", "amount": "9.52", "trade_fee": {"percent": "0", "percent_token": "USDT", "flat_fees": [{"token": "USDT", "amount": "0"}]}, "exchange_trade_id": "442859222808420353X1", "exchange_order_id": "C02__442859222808420353049", "leverage": 1, "position": "NIL", "event_name": "OrderFilledEvent", "event_source": "mexc"}
2024-07-19 14:12:07,500 - 64580 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "order_id": "HUMBOTSFOUT61d933e3fb8d2021dd7ab", "base_asset": "FIRO", "quote_asset": "USDT", "base_asset_amount": "9.52", "quote_asset_amount": "12.495952", "order_type": "OrderType.LIMIT", "exchange_order_id": "C02__442859222808420353049", "event_name": "SellOrderCompletedEvent", "event_source": "mexc"}

# Filled sell order HUMBOTSFOUT61d933e3fb8d2021dd7ab and opened executor
# Creating / Created limit buy close order HUMBOTBFOUT61d9393396a89021dd7ab and cancelled @2024-07-19 14:19:23,870
2024-07-19 14:12:07,504 - 64580 - hummingbot.connector.client_order_tracker - INFO - SELL order HUMBOTSFOUT61d933e3fb8d2021dd7ab completely filled.
2024-07-19 14:12:07,675 - 64580 - hummingbot.strategy.script_strategy_base - INFO - Creating FIRO-USDT buy order: price: 1.299474 amount: 9.52.
2024-07-19 14:12:07,867 - 64580 - hummingbot.connector.client_order_tracker - INFO - Created LIMIT BUY order HUMBOTBFOUT61d9393396a89021dd7ab for 9.52 FIRO-USDT.
2024-07-19 14:12:07,867 - 64580 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "type": "OrderType.LIMIT", "trading_pair": "FIRO-USDT", "amount": "9.52", "price": "1.2994", "order_id": "HUMBOTBFOUT61d9393396a89021dd7ab", "creation_timestamp":<PHONE_NUMBER>.0, "exchange_order_id": "C02__442865201755205632049", "leverage": 1, "position": "NIL", "event_name": "BuyOrderCreatedEvent", "event_source": "mexc"}
2024-07-19 14:18:22,343 - 64580 - hummingbot.strategy.script_strategy_base - INFO - (FIRO-USDT) Canceling the limit order HUMBOTBFOUT61d933e3fb3df021dd7ab. [clock=2024-07-19 06:18:22+00:00]
2024-07-19 14:18:22,468 - 64580 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "order_id": "HUMBOTBFOUT61d933e3fb3df021dd7ab", "exchange_order_id": "C02__442859222804234240049", "event_name": "OrderCancelledEvent", "event_source": "mexc"}
2024-07-19 14:18:22,474 - 64580 - hummingbot.connector.client_order_tracker - INFO - Successfully canceled order HUMBOTBFOUT61d933e3fb3df021dd7ab.
2024-07-19 14:18:23,376 - 64580 - hummingbot.strategy.script_strategy_base - INFO - Creating FIRO-USDT buy order: price: 1.304678399999999999780975202 amount: 9.580905148732438585706987879.
2024-07-19 14:18:23,495 - 64580 - hummingbot.connector.client_order_tracker - INFO - Created LIMIT BUY order HUMBOTBFOUT61d93a99e2a56021dd7ab for 9.58 FIRO-USDT.
2024-07-19 14:18:23,495 - 64580 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "type": "OrderType.LIMIT", "trading_pair": "FIRO-USDT", "amount": "9.58", "price": "1.3046", "order_id": "HUMBOTBFOUT61d93a99e2a56021dd7ab", "creation_timestamp":<PHONE_NUMBER>.0, "exchange_order_id": "C02__442866777328717824049", "leverage": 1, "position": "NIL", "event_name": "BuyOrderCreatedEvent", "event_source": "mexc"}
2024-07-19 14:18:26,444 - 64580 - hummingbot.connector.exchange.mexc.mexc_api_user_stream_data_source.MexcAPIUserStreamDataSource - WARNING - The websocket connection was closed (The WS connection was closed unexpectedly. Close code = 1006 msg data: 0)
2024-07-19 14:18:31,559 - 64580 - hummingbot.connector.exchange.mexc.mexc_api_user_stream_data_source.MexcAPIUserStreamDataSource - INFO - Successfully obtained listen key 0d93349bb49214b7960e80ac7d3ed0c3990038ae90ee4340e3ee9eada9a47866
2024-07-19 14:18:32,154 - 64580 - hummingbot.connector.exchange.mexc.mexc_api_user_stream_data_source.MexcAPIUserStreamDataSource - INFO - Subscribed to private order changes and balance updates channels...

# Creating / Created market buy close order HUMBOTBFOUT61d93ad3373fc021dd7ab
2024-07-19 14:19:23,489 - 64580 - hummingbot.strategy.script_strategy_base - INFO - Creating FIRO-USDT buy order: price: NaN amount: 9.52.
2024-07-19 14:19:23,492 - 64580 - hummingbot.strategy.script_strategy_base - INFO - (FIRO-USDT) Canceling the limit order HUMBOTBFOUT61d9393396a89021dd7ab. [clock=2024-07-19 06:19:23+00:00]
2024-07-19 14:19:23,615 - 64580 - hummingbot.connector.client_order_tracker - INFO - Created MARKET BUY order HUMBOTBFOUT61d93ad3373fc021dd7ab for 9.52 FIRO-USDT.
2024-07-19 14:19:23,615 - 64580 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "type": "OrderType.MARKET", "trading_pair": "FIRO-USDT", "amount": "9.52", "price": "NaN", "order_id": "HUMBOTBFOUT61d93ad3373fc021dd7ab", "creation_timestamp":<PHONE_NUMBER>.0, "exchange_order_id": "C02__442867029507063808049", "leverage": 1, "position": "NIL", "event_name": "BuyOrderCreatedEvent", "event_source": "mexc"}

# Partially filled buy order HUMBOTBFOUT61d9393396a89021dd7ab
2024-07-19 14:19:23,693 - 64580 - hummingbot.connector.client_order_tracker - INFO - The BUY order HUMBOTBFOUT61d93ad3373fc021dd7ab amounting to 9.11/9.52 FIRO has been filled.
2024-07-19 14:19:23,693 - 64580 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "order_id": "HUMBOTBFOUT61d93ad3373fc021dd7ab", "trading_pair": "FIRO-USDT", "trade_type": "TradeType.BUY", "order_type": "OrderType.MARKET", "price": "1.3221", "amount": "9.11", "trade_fee": {"percent": "0", "percent_token": "USDT", "flat_fees": [{"token": "USDT", "amount": "0"}]}, "exchange_trade_id": "442867029507063808X1", "exchange_order_id": "C02__442867029507063808049", "leverage": 1, "position": "NIL", "event_name": "OrderFilledEvent", "event_source": "mexc"}
2024-07-19 14:19:23,867 - 64580 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "order_id": "HUMBOTBFOUT61d9393396a89021dd7ab", "exchange_order_id": "C02__442865201755205632049", "event_name": "OrderCancelledEvent", "event_source": "mexc"}
2024-07-19 14:19:23,870 - 64580 - hummingbot.connector.client_order_tracker - INFO - Successfully canceled order HUMBOTBFOUT61d9393396a89021dd7ab.
2024-07-19 14:19:24,511 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:24,512 - 64580 - hummingbot.strategy.script_strategy_base - INFO - Creating FIRO-USDT sell order: price: 1.325822400000000000219041452 amount: 9.428110431683760960694926411.
2024-07-19 14:19:24,626 - 64580 - hummingbot.connector.client_order_tracker - INFO - Created LIMIT SELL order HUMBOTSFOUT61d93ad43050e021dd7ab for 9.42 FIRO-USDT.
2024-07-19 14:19:24,626 - 64580 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "type": "OrderType.LIMIT", "trading_pair": "FIRO-USDT", "amount": "9.42", "price": "1.3258", "order_id": "HUMBOTSFOUT61d93ad43050e021dd7ab", "creation_timestamp":<PHONE_NUMBER>.0, "exchange_order_id": "C02__442867033718169600049", "leverage": 1, "position": "NIL", "event_name": "SellOrderCreatedEvent", "event_source": "mexc"}
2024-07-19 14:19:26,552 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:28,734 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:28,947 - 64580 - hummingbot.connector.client_order_tracker - WARNING - The order fill updates did not arrive on time for HUMBOTBFOUT61d93ad3373fc021dd7ab. The complete update will be processed with incomplete information.
2024-07-19 14:19:28,948 - 64580 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "order_id": "HUMBOTBFOUT61d93ad3373fc021dd7ab", "base_asset": "FIRO", "quote_asset": "USDT", "base_asset_amount": "9.11", "quote_asset_amount": "12.044331", "order_type": "OrderType.MARKET", "exchange_order_id": "C02__442867029507063808049", "event_name": "BuyOrderCompletedEvent", "event_source": "mexc"}
2024-07-19 14:19:28,960 - 64580 - hummingbot.connector.client_order_tracker - INFO - BUY order HUMBOTBFOUT61d93ad3373fc021dd7ab completely filled.
2024-07-19 14:19:30,883 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:32,977 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:35,022 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:37,033 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:39,184 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:41,289 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:43,434 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:45,482 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:47,489 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:49,559 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:51,641 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:53,672 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:55,912 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:19:57,981 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:20:00,002 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:20:02,084 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:20:04,112 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:20:06,114 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:20:08,121 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:20:10,195 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:20:12,224 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:20:14,392 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:20:16,506 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:20:18,563 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:20:20,686 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52
2024-07-19 14:20:22,784 - 64580 - hummingbot.strategy_v2.executors.position_executor.position_executor - INFO - Waiting for close order to be filled --> Filled amount: 9.11 | Open amount: 9.52

Observed at 2024-07-19 14:19:23,693 - 64580 the market order was partially filled 9.11/9.52
Executor now waits for the market order to get filled therefore it spams Waiting for close order to be filled --> Filled amount..
Below are the trade data between client and exchange order history

logs_conf_v2_mexc_1a.log


Update Multicall to Multicall3

Problem
Multicall supports very few chains and with different contract addresses, as well as always reverting on a single call failure. Another problem is that the Multicall struct is only initializable by either having the address beforehand or asynchronously with a call to get_chain_id.
Proposed solution
Upgrading to the maintained fork Multicall. It includes Multicall3 with a higher chain coverage, always deployed at the same address (0xcA11bde05977b3631167028862bE2a173976CA11), retro-compatible and more advanced contract methods (ex. specify allowFailure or value for each call).
I have already made some changes for my own project and can easily port them over in a PR.
Please let me know what you think about this 😃

SGTM - PR is welcome


⚠ Bofrost.lu has degraded performance

In c12e5d2, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1047 ms

Resolved: Bofrost.lu performance has improved in 9d80ec7.


Do you plan to support Twitter login soon ?

I will dive into it and see if I can implement it soon

Also looking for twitter support! =D

Hello @jogboms  .When i login with twitter.
I get the following error.

@saiprasath-swaas Sadly the implementation for Twitter is not supported yet.

Anything yet?

+1 twitter support


feat: add ethereum methods in EthereumProvider

[x] Add ethereum methods in  EthereumProvider file.

What about the changes that i requested?


ReplaceTokens fails with space in path

Recently the ReplaceTokens task fails if the path contains a space. It worked with version 0.0.3 on the 26th february, but fails today with version 0.0.4.
Error message:
2016-03-07T19:33:02.2330283Z ##[error]Could not find file "D:\BuildAgent\_work\d5b03417b\Some Folder\Debug\SomeProject.Web.SetParameters.xml"

Hi @pascalberger - I can't seem to repro this issue. Can you please set system.debug to true in your build definition and run the build. Then can you send me the log or just the part of the log for the ReplaceTokens task? Then I can dig a little deeper.
FYI I'm using the vso-task-lib functions to find the file, and that apparently is returning a list with count != 1, which is why you're seeing this error. However, if I run node and import vso-task-lib and find a file in a directory with a space in it, it's returning 1 result as expected.

I'm getting no files to process

does the source path support wildcards and folder recursion?

Hi @jrabarton - No, the task requires a specific (fully specified) path. It will allow $(agent.sourcesdirectory) or other variables, but the path must be to a single file. Can you tell me why you'd want multiple files or wildcards?

Our solutions have web and often multiple middleware files, these are in separate projects in the same solution.
Even if we don't change code in a middleware we still build and release all the projects to keep everything at the same version number for auditing purposes.

Hi @jrabarton. I've changed the ReplaceToken task to take in a sourcePath and a filePattern. That way you can do minimatch patterns and replace in multiple files. Let me know how it goes!


Dr.Elephant Compilation Error for Hadoop Version : 2.7.1 and Spark Version  : 1.6.2

Build Failing while compiling Dr.Elephant for Hadoop Version : 2.7.1 and SparkVersion  : 1.6.2
#!/usr/bin/env bash
[info] ScalaTest
[info] Run completed in 14 seconds, 520 milliseconds.
[info] Total number of tests run: 137
[info] Suites: completed 14, aborted 0
[info] Tests: succeeded 131, failed 6, canceled 0, ignored 0, pending 0
[info] *** 6 TESTS FAILED ***
[error] Failed: Total 367, Failed 6, Errors 0, Passed 360, Skipped 1
[error] Failed tests:
[error] 	com.linkedin.drelephant.util.SparkUtilsTest
[error] (test:test) sbt.TestsFailedException: Tests unsuccessful
[error] Total time: 166 s, completed Oct 25, 2017 3:21:58 PM
+ cd target/universal
./compile.sh: line 131: cd: target/universal: No such file or directory
++ /bin/ls '*.zip'
ls: *.zip: No such file or directory
+ ZIP_NAME=
+ unzip
UnZip 6.00 of 20 April 2009, by Info-ZIP.  Maintained by C. Spieler.  Send
bug reports using http://www.info-zip.org/zip-bug.html; see README for details.

Usage: unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
  Default action is to extract files in list, except those in xlist, to exdir;
  file[.zip] may be a wildcard.  -Z => ZipInfo mode ("unzip -Z" for usage).

  -p  extract files to pipe, no messages     -l  list files (short format)
  -f  freshen existing files, create none    -t  test compressed archive data
  -u  update files, create if necessary      -z  display archive comment only
  -v  list verbosely/show version info       -T  timestamp archive to latest
  -x  exclude files that follow (in xlist)   -d  extract files into exdir
modifiers:
  -n  never overwrite existing files         -q  quiet mode (-qq => quieter)
  -o  overwrite files WITHOUT prompting      -a  auto-convert any text files
  -j  junk paths (do not make directories)   -aa treat ALL files as text
  -C  match filenames case-insensitively     -L  make (some) names lowercase
  -X  restore UID/GID info                   -V  retain VMS version numbers
  -K  keep setuid/setgid/tacky permissions   -M  pipe through "more" pager
See "unzip -hh" or unzip.txt for more help.  Examples:
  unzip data1 -x joe   => extract all files except joe from zipfile data1.zip
  unzip -p foo | more  => send contents of foo.zip via pipe into program more
  unzip -fo foo ReadMe => quietly replace existing ReadMe if archive file newer
+ rm
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file
+ DIST_NAME=
+ chmod +x /bin/dr-elephant
chmod: /bin/dr-elephant: No such file or directory
+ sed -i.bak '/declare -r app_classpath/s/.$/:`hadoop classpath`:${ELEPHANT_CONF_DIR}"/' /bin/dr-elephant
sed: /bin/dr-elephant: No such file or directory
+ cp /Users/shahrukhan/Downloads/dr-elephant-2.0.15_2/scripts/start.sh /bin/
cp: /bin/start.sh: Operation not permitted
+ cp /Users/shahrukhan/Downloads/dr-elephant-2.0.15_2/scripts/stop.sh /bin/
cp: /bin/stop.sh: Operation not permitted
+ cp -r /Users/shahrukhan/Downloads/dr-elephant-2.0.15_2/app-conf
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
+ zip -r .zip

zip error: Nothing to do! (.zip)
+ mv .zip /Users/shahrukhan/Downloads/dr-elephant-2.0.15_2/dist/
mv: rename .zip to /Users/shahrukhan/Downloads/dr-elephant-2.0.15_2/dist/.zip: No such file or directory

Same thing happens with
HADOOP_VERSION="2.7.1"
SPARK_VERSION="1.4.0"

I also verified this, unit tests fail with Hadoop 2.7.1. @shankar37 @akshayrai We should fix this.
However, @shahrukhkhan489 I think you don't need to compile with 2.7.1 to use against 2.7.1. If you compile with the Dr Elephant's default Hadoop version and use against 2.7.1 then that should work too. Let me know if you still experience issues.

@shkhrgpt Yes unit test fails too.
Thanks.
Anyways I have compiled it with the default versions given in the code and it works
 hadoop_version=2.3.0 spark_version=1.4.0
Does compiling with Spark 1 makes it work with Spark 2?
I have raised #298 for this.

Dr Elephant does not support Spark 2 applications, so that won't work.


Wrong versions for pre-release under overview

HACS -> Settings (0.13.0b0)
http://pix.toile-libre.org/upload/original/1564946305.png
HACS -> Overview Integrations (0.12.1)
http://pix.toile-libre.org/upload/original/1564946381.png
Originally posted by @VDRainer in https://github.com/custom-components/hacs/issues/377#issuecomment-518027257

Fixed in https://github.com/custom-components/hacs/releases/tag/0.13.0b1


[Snyk] Security upgrade ubuntu from 18.04 to 24.10

Snyk has created this PR to fix 1 vulnerabilities in the dockerfile dependencies of this project.
Keeping your Docker base image up-to-date means you’ll benefit from security fixes in the latest version of your chosen image.
Snyk changed the following file(s):

Dockerfile

We recommend upgrading to ubuntu:24.10, as this image has only 7 known vulnerabilities. To do this, merge this pull request, then verify your application still works as expected.
Vulnerabilities that will be fixed with an upgrade:

Issue
Score

Out-of-bounds Write SNYK-UBUNTU1804-NCURSES-5854175
  514

Out-of-bounds Write SNYK-UBUNTU1804-NCURSES-5854175
  514

Out-of-bounds Write SNYK-UBUNTU1804-NCURSES-5854175
  514

Out-of-bounds Write SNYK-UBUNTU1804-NCURSES-5854175
  514

Out-of-bounds Write SNYK-UBUNTU1804-NCURSES-5854175
  514

[!IMPORTANT]

Check the changes in this PR to ensure they won't cause issues with your project.
Max score is 1000. Note that the real score may have changed since the PR was raised.
This PR was automatically created by Snyk using the credentials of a real user.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
📜 Customise PR templates
🛠 Adjust project settings
📚 Read about Snyk's upgrade logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Learn about vulnerability in an interactive lesson of Snyk Learn.

:tada: Snyk checks have passed. No issues have been found so far.
:white_check_mark: security/snyk check is complete. No issues have been found. (View Details)


Project.getPath is deprecated.

Use ::getPaths instead
Project.getPath (/usr/share/atom/resources/app/src/project.js:585:12)
dir (/home/anion/.atom/packages/git-plus/lib/git.coffee:147:57)

I was trying to init git repo, but than happen this...

Are you running atom in 1.0.0 mode?

Sorry, but I don't really understand what are you talking about.

you can start atom in 1.0.0 mode which is a preview of the upcoming 1.0 release. You just need to start atom with the -1 flag.


Update GitHub's RSA fingerprint after the key leak

After a recent key leak GitHub has rotated its RSA key, so the fingerprint has changed as well. We shouldn't be advertising the revoked one's as acceptable.

New keys: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints.
Related article: https://www.bleepingcomputer.com/news/security/githubcom-rotates-its-exposed-private-ssh-key/

Thanks


Additional coloring

Is your feature request related to a problem? Please describe.
Hello, will be nice to have alternate row  foreground/background coloring.  And vertical  + horizontal bars option.
Additional context
I think it's important for long tables readability.

I just found out about an extension in the Community Toolkit that allows you to set alternate colors on a ListView. Although I haven't tested it yet, it seems like it's worth giving a shot.
https://learn.microsoft.com/en-us/dotnet/communitytoolkit/windows/extensions/listviewextensions#alternatecolor
I'll make an effort to include alternating row colors and grid lines in the next major release.


encoding/json: Compact should be consistent with escaping

As requested by @mvdan I'm filing an issue to decide on the escaping behaviour of Compact for go1.14.
#30357 was originally filed as Compact escapes U+2028 and U+2029 which increases the output size without being documented. The fix for that issue was documentation (CL 173417) that turned out to be incorrect and was reverted by CL 188717.
Compact currently escapes U+2028 and U+2029, but it doesn't escape <, > or &. Compact is thus only performing a subset of HTML escaping and it's output is not safe to embed inside HTML <script> tags as CL 173417 had documented.
If I understand correctly, the escaping of U+2028 and U+2029 was added not for HTML but rather for JavaScript interpreters that might consume a directly embedded JSON literal.
The options seem to be:

Stop performing any escaping in Compact as the original issue requested. The escaping of escaping U+2028 and U+2029 was added in CL 10883045, and reading over the comments, it does seem like it was intentional to have Compact escape U+2028 and U+2029.

Have Compact properly perform HTML escaping, as HTMLEscape, does and be documented as such. This is likely the safest option, as the only consequence to overly aggressive escaping is larger encoded JSON.

Document that Compact escapes U+2028 and U+2029, but not <, > or & and is thus not safe to embed in HTML without separately calling HTMLEscape.

Do nothing~

/cc @PhilipBorgesen @rsc @bradfitz

I think each of the options has merit, except doing nothing. In #30357 I complained that Compact behaved surprisingly, doing more than what was documented, and returning a less compact result in contrast to what the function name implied. Doing nothing means that issue persists.
As for the three other options I think:

Making Compact do proper HTML escaping may be the safest.
Making Compact do no escaping is the most useful. Far from all JSON is intended consumption by browsers, and depending on the application, character escaping may be seen as a corruption. Users wanting compacted and “HTML escaped” JSON can always apply both of Compact and HTMLEscape on their data, which is what the current documentation implies one should do. I note that this behavior was what the Go 1 compatibility guarantee originally promised going forward. The breaking change of this guarantee happened several releases ago though, so changing the implementation now might also break programs, although I would think this is unlikely.
Simply documenting the current behavior is the lowest effort solution. It is also the best bet that no programs will break, which both of the above options in practice could.

I agree that we need to do something here.
I think the best solution is to stop doing any escaping at all. Like others have mentioned in this thread, that's what is documented, HTMLEscape already exists, and Compact has never done any complete form of escaping.
I doubt that any programs would break. If any was depending on undocumented behavior, one could argue that their program should have been using HTMLEscape to begin with, to do proper escaping.
My opinion is that we can give this a try in the current cycle for 1.14, and reconsider or revert if a large amount of users complains once it lands in master or in any of the pre-releases. I'm happy to review a CL.


Strange computed property cache

Version
2.5.16
Reproduction link
https://jsfiddle.net/yLmgL8gf/338/
Steps to reproduce
Could not reproduce (link to attempt)
In my code (store namespaced)

  computed: {
    human() {
      return this.$store.state.human; // some object
    },
    hold() {
      return this.human.hold; // property of some object
    },
  }

// ... 1 initial state  2 fetch data of human from server - in code and console output

// one place
      console.log('hold[2]:', this.hold);  // undefined
      console.log('hold[2]:', this.human); // Object{hold: 1}
      console.log('hold[2]:', this.human.hold); // 1
      console.log('hold[2]:', this.$store.state.human); // Object{hold: 1}
      console.log('hold[2]:', this.$store.state.human.hold); // 1

What is expected?
Not undefined (expected value 1)
What is actually happening?
Mystic o_O

Temporarily returned to use the record of human.hold instead directly hold

Looks like you misunderstood the purpose of actions/mutations in the Vuex. You should never update the state inside of action function. You need to that by commiting a mutation instead. State in the action is read-only.  Fixed reproduction https://jsfiddle.net/mLuew9k2/


Memory leak

Hello,
First, thank you so much for your source code.
But there is a memory leak issue when training,
The source stop at almost 2000th episode.
My PC has 32G RAM.
Below is the last part of messages
...
episode: 2074  [000020] worker: 0  net worth: 1035202.66 average: 1177863.37 orders: 38
episode: 2075  [000020] worker: 5  net worth: 1458406.87 average: 1163223.70 orders: 10
episode: 2076  [000020] worker: 5  net worth: 467591.76  average: 1156877.23 orders: 1
unable to alloc 3840000 bytes

I have same issue .. it is consuming all memory is available I could not found the problem yet


add mariadb new key for distros > trusty

new key from: https://downloads.mariadb.org/mariadb/repositories/#distro=Ubuntu&distro_release=xenial--ubuntu_xenial&version=10.0
Observed on os: linux-ppc64le builds but eventually will apply to all images
like:
https://travis-ci.org/grooverdan/travis-test/jobs/397217466#L462

@meatballhat  - could you please check and review ?

thanks for the quick merge.


⚠ Bofrost.fr has degraded performance

In 1887609, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1411 ms

Resolved: Bofrost.fr performance has improved in 3ccfabf after 6 minutes.


[BUG] pattern on stroke has variable distance and dotted stroke shows up

It seems the distance between instances varies with cursor speed during the stroke, I'd imagine due to performance, most likely. This example was using a 64x64 clipart and the distance between instances changes according to the cursor speed during a stroke.
On a related note, when the dashed style is selected, the stroke seems to show through instead of staying invisible

@pubpub-zz this version has consistently spaced clipart instances! A bug I noticed though was that the clipart box indicator for when you're first choosing the clip's dimensions doesn't seem to be working

I can not reproduce the box indicator issue, can you provide a video ?

https://user-images.githubusercontent.com/19545604/209451167-7a814211-f026-4eb1-9d92-c0f9047479c0.mp4
all the pens turned red after I hit ctrl+r, but it was happening like this even before I did that

Ça. You please provide your config and pens file

Absolutely!
pens-and-config.zip
PS/ Happy Holidays!

Thanks merry Christmas to you too 😀
First remember this release integrates  #240 : when activated (default), pressing shift or control will provide you access to up to 10 more pens. Your pens defines those pens to all as red. This can be disabled when checking off extrapens in  hotkeys option tab
Second, this version also introduced the switch from hand to pen when pressing shift or control to toggle between hand and line to ease drawing straight lines. There was a side effect, when you are using as you did a hotkey that contains ctrl or shift - as you have set scale / rotate to ctrl+R - reseting the tool to hand when releasing. I've fixed it ; can you check it is now ok for you?
Also I've associated this feature to the option setting "alt as as temporary" : you can disable it unchecking the function
give me your feedbacks
ppInk ctrl in hotkeys.zip

With that build, I still get the same effect when hitting ctrl+r and trying to insert a clipart afterwards. If I disable the extra pens the clipart still doesn't display the box around it when trying to determine its size. I have also tried disabling "alt as temporary" and the bug is still there. It's no deal breaker but might want to fix it for the next release :D

🤔🤔🤔🤔
can you provide a video and also your hotkeys.ini please

https://user-images.githubusercontent.com/19545604/209880459-bc74c82e-6caa-4a55-80b9-c89b00347253.mp4
the hotkeys.ini that I'm using is the one that came in bundled with the zip above. I extracted the archive and tested from that one straight

I've not been able to find the hotkeys.ini not in your previous zip. only config and pens

Sorry, I meant your file, not mine. I downloaded and used the bundled build from this post https://github.com/pubpub-zz/ppInk/issues/238#issuecomment-1366515679 to record the video 2 posts above


Adds minimal support for Portis

Adds basic support for the first 2 flavors of rLogin to Portis. Portis is not an EIP1193 provider and relies on the deprecated send and sendAsync functions. For retrieving the chainId and addresses, send().then() works without issue. However, Portis requires the sign method to use a callback.
At the current state, since Portis is not an EIP1193 provider, a dapp could use rLogin with Portis, but they would need to make sure their functions support the .send/sendasync methods.
flavors

Allows rLogin to pass the provider through when using rLogin's flavor 1.
Allows a user to sign a message owning a DID, i.e. flavor 2.
In theory the 3rd flavor of rLogin (i.e. connecting the the DV and getting DD and Creds) should work. However, modifications to the Rif Id Manager, and Email VC issuer would need to be done to insert the data.

misc
It also adds a loading wheel after the user has selected a provider. Portis sometimes takes a while to load and this lets the user know that it is in progress.

Closing in favor of #89


Get focus events via eventFilter in ConstantWidgetBase

This allows subclasses to just call installEvent(self) on the child widgets to make focus-out work correctly.
It makes implementing constant widgets that contain several children easier.

This seems to affect the ConstantEnumWidget, which now needs to be double-clicked.

Fixed by 96032653.


Selenium tests for adding, deleting and changing pinning rules.

Since https://github.com/StarcounterApps/Website/issues/101 is done we should implement tests that covers pinning rules functionality.

Created PR https://github.com/StarcounterApps/Website/pull/151

Closing as done


Fix occasionally show up nosetests

I fixed the occasionally show up bug when running nosetests, and I tried to run the new code for 10 times. No code coverage reduce has shown up.

The number of total line reduces by 3 lines so codecov goes down, but I already fixed the issue.

I'm wondering if we're failing codecov here because the total number of lines have changed. Wondering if we should increase coverage for the specific route function that's changed (if it happens to not have every line covered at the moment)

What do you mean? Test cases now always cover all the lines.

Oh ok, I guess to deal with the -0.02% decrease then our options would be to add coverage somewhere else in routes.py or models.py, or to figure out how to get code cov to not block pull requests that only have a very small coverage decrease (could try to set that to a 0.02% threshold)

Ok, maybe then we should add a test for line 54 in models.py to avoid the pull request from being blocked by a -0.02% in coverage. was looking to see if there's a way to modify .coveragerc to specify a threshold for decreases in code coverage that should be permitted, but not finding anything on this at the moment

I just added a test case for models.py.


Perler Mini Template - A few changes possibly needed

Hey I was using the template (Perler Minis + Artkal C Series) and it gave me P38 Magenta as a color. I can't find this color existing for the Perler Minis. I also noticed one color missing (P10 - Dark Green)
Missing
P10 - Dark Green (Available for purchase on the Perler website)
Color Doesn't Exist
P38 - Magenta (What's weird is this color exists for both Perler Caps & Regular Perler but not for minis)
Color may soon be out of production (Still exists on other websites but not on Perler's website for purchase)
P92 - Dark Gray

@Exodeca1
Thanks for this feedback, I'm going to look at those and fix the file as well.
Are you able to confirm the following things ?
P10: Dark Green: I agree, thankfully Perlervault already sample those which the following code : #007B4E, does it looks good to you ?
P38: Magenta: I might have screw up while merging all known sources, I guess it from the perler midi size, great catch.
P92: Already available here, can you confirm this as well ?

Thanks for the quick response!
For P10 Dark Green, the #007B4E color looks good to me!
For P38 Magenta, I double checked and it's definitely not a color available as a mini
For P92 Dark Gray, it's available on the website!
Thanks again!

Magenta in Perler Mini has been replaced with Dark Green.
Thanks again for feedback, please feel free to check it yourself and close if everything is fine.
Regards.

Fantastic! Thank you for all the great work!


Server not listed. Server online: No

I have wandered everywhere and tried almost everything. Still, can not figure out why it is still not online on Steam Master server. Here is my main.cfg
# config environment
arkserverroot="/home/steam/ARK"                                     # path of your ARK server files (default ~/ARK)

# ARK server options - use ark_<optionname>=<value>
# comment out these values if you want to define them
# inside your GameUserSettings.ini file
serverMap="TheIsland"                                               # server map (default TheIsland)
#serverMapModId="469987622"                                         # Uncomment this to specify the Map Mod Id (<fileid> in http://steamcommunity.com/sharedfiles/filedetails/?id=<fileid>)
#ark_TotalConversionMod="496735411"                                 # Uncomment this to specify a total-conversion mod
ark_RCONEnabled="True"                                              # Enable RCON Protocol
ark_RCONPort="32330"                                                # RCON Port
ark_Port="7778"                                                     # ARK server port (default 7778)
ark_QueryPort="27015"                                               # ARK query port (default 27015)
ark_bRawSockets="True"
ark_ServerPassword=""                                               # ARK server password, empty: no password required to login
ark_ServerAdminPassword="***"                               # ARK server admin password, KEEP IT SAFE!
ark_MaxPlayers="70"
ark_GameModIds="878297372,558079412,700624475,731604991,821530042,928102085,693416678,895711211"                     # Uncomment to specify additional mods by Mod Id separated by commas
#ark_AltSaveDirectoryName="SotF"                                    # Uncomment to specify a different save directory name

# ARK server flags - use arkflag_<optionname>=true
#arkflag_OnlyAdminRejoinAsSpectator=true                            # Uncomment to only allow admins to rejoin as spectator
#arkflag_DisableDeathSpectator=true                                 # Uncomment to disable players from becoming spectators when they die

# ARK server options - i.e. for -optname=val, use arkopt_optname=val
#arkopt_StructureDestructionTag=DestroySwampSnowStructures

It is running and I can join directly using IP. I have checked that I have no firewall running and everything is open. I even used nmap to check open ports listed on netstat. They are all accessible.

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:7777
ACCEPT     udp  --  anywhere             anywhere             udp dpt:7777
ACCEPT     udp  --  anywhere             anywhere             udp dpt:27015
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:32330
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:7778
ACCEPT     udp  --  anywhere             anywhere             udp dpt:7778
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:27016
ACCEPT     udp  --  anywhere             anywhere             udp dpt:27016

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

netstat -tuplen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 <IP_ADDRESS>:22              <IP_ADDRESS>:*               LISTEN      0          42948       29924/sshd
tcp        0      0 <IP_ADDRESS>:32330           <IP_ADDRESS>:*               LISTEN      1000       646190      31062/ShooterGameSe
tcp6       0      0 :::22                   :::*                    LISTEN      0          42950       29924/sshd
udp        0      0 <IP_ADDRESS>:7777            <IP_ADDRESS>:*                           1000       644773      31062/ShooterGameSe
udp        0      0 <IP_ADDRESS>:7778            <IP_ADDRESS>:*                           1000       646310      31062/ShooterGameSe
udp        0      0 <IP_ADDRESS>:27015           <IP_ADDRESS>:*                           1000       642769      31062/ShooterGameSe

Anyone has any idea? My server ip is at <IP_ADDRESS>. Please do try to check the ports yourself if that helps. Thank you!

That looks like you're running two servers, one of which has only opened the game port.  Either that, or the ARK server is now binding to both the Port and GamePort (Port+1) ports.
The server is showing up in the steam master list:
http://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=<IP_ADDRESS>
{
	"response": {
		"success": true,
		"servers": [
			{
				"addr": "<IP_ADDRESS>:27015",
				"gmsindex": 65534,
				"appid": 346110,
				"gamedir": "ark_survival_evolved",
				"region": -1,
				"secure": true,
				"lan": false,
				"gameport": 7777,
				"specport": 0
			}
		]

	}
}

It is also showing up on arkservers.net:
https://arkservers.net/server/<IP_ADDRESS>:27015

Ummm I'm sure I am running only one server. Can you please elaborate?

The server is showing up in the steam master list:

It is also showing up on arkservers.net:

Yes, that's what I checked, the server is available and validated. But still, when I search on steam servers, I can't find it.

Thanks for the reply @klightspeed. Ummm I'm sure I am running only one server. Can you please elaborate?

The server is showing up in the steam master list:

It is also showing up on arkservers.net:

Yes, that's what I checked, the server is available and validated. But still, when I search on steam servers, I can't find it.

I suspect there are so many servers out there that both the in-game server browser and the Steam server browser give up after listing about 10k-15k servers.

I suspect there are so many servers out there that both the in-game server browser and the Steam server browser give up after listing about 10k-15k servers.
It's not even 10k right now, mine is on 4k and stopped haha

got the same problem :/

Does it work if you run the ShooterGameServer directly, using the options you have specified (written in arkserver.log)?

hello, I have a similar problem. In the configuration file I specified port 7777, but it try starts on port 7776.

arkmanager status
Running command 'status' for instance 'main'
Server running:   Yes
Server PID:   2292
Server listening:   Yes
Server Name: [UA]Arkanion|x10|PVE\PVP|Ragnarok|Castle|CFL|Structure+| - (v27
Players: 0 / 20
Active Players: 0
Server online:   No
Server build ID:   2204510

ps aux| grep Shooter
steam     2292 22.9 47.5 7788716 5781700 ?     Sl   14:40  23:50 /steam/arkdedicated/ShooterGame/Binaries/Linux/ShooterGameServer Ragnarok?RCONEnabled=True?RCONPort=32330?SessionName=[UA]Arkanion|x10|PVE\PVP|Ragnarok|Castle|CFL|Structure+|?Port=7776?QueryPort=27015...

netstat -tuplen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 <IP_ADDRESS>:32330           <IP_ADDRESS>:*               LISTEN      1001       29597       2292/ShooterGameSer
udp        0      0 <IP_ADDRESS>:27015           <IP_ADDRESS>:*                           1001       22773       2292/ShooterGameSer
udp        0      0 <IP_ADDRESS>:7777            <IP_ADDRESS>:*                           1001       26599       2292/ShooterGameSer

lsof -i -P -n| grep 777
ShooterGa  2292    steam   18u  IPv4  26599      0t0  UDP *:7777

and have another problem, i set next parametr:

arkCpuAffinity=2
at startup, writes that the kernels have changed, but still works at all

if you apply taskset pid 2, it helps
thanks for the help

Did anyone ever figure this out? Not that it looks like an issue, but I'm still getting Server online: No even though all ports are opened. Listed on arkservers.net, ark-servers.net, and battlemetrics.com, even on the steam API link. Can connect and play on the server, so not sure when this, if it ever will be an issue.
Hm. The issue went away when I updated arkmanager... I guess if everyone had the same issue as me, this could be marked as solved.

I got the same problem and I notice that :
Modification of /usr/local/bin/arkmanager
function isTheServerOnline(){   if [ -n "$(getMultiHome "")" ]; then     **# comment this     #publicip="$(curl --interface "$(getMultiHome)" -s http://api.ipify.org/)"     # for this     publicip="$(curl -s http://api.ipify.org/)"**   else     publicip="$(curl -s http://api.ipify.org/)"   fi
After this change and after restart the server, the server is online on arkservers.net.
My getMultiHome is my real public IP address but my servers have private ip address behind a NAT.
In that way, curl cannot works properly.

@JimmyMEG1 This was the same case here, this seems to fix it

This was fixed in 6da2c49 (in v1.6.35)


Revise Settings dialog according to new UX design

User Story
As a user, I want a more organized and intuitive settings interface, so that I can easily navigate, find, and manage settings for different extensions and projects.
Description

[ ] Implement sidebar hierarchy - extension dropdown with each of that extension's settings groups under its dropdown
[ ] Put all of the settings in one dialog (just UI side of this work)
[ ] Add support for receiving a project id and only showing settings for that project id (see s/r webview, delivers different UI based on a boolean)
[ ] Put all of one extension's setting groups on the same page in cards. Clicking a setting group in the sidebar would scroll to that group
[x] Use Switch instead of Checkbox
Many other small adjustments and tweaks

Implementation idea
See the S/R web view for an example of delivering different UI based on a boolean, we could do something similar for receiving a project id and only showing settings for that project id.
See the links below for UX design doc and mockup:
Platform Settings – FigJam
Combined Settings – v0 by Vercel

Fill this issue out (or make multiple) when UX gives us their design to implement for epic 13

Some notes from the UX presentation:

Command to open settings needs to be able to accept argument for specific setting to show. Argument for focus mode

Do we need to be able to focus setting groups?
UX undecided: only one settings dialog, add back/forward buttons

Extension dev adds buttons to web view toolbar - probably separate issue as not super closely related to settings. Probably fits more in the tab nav epic
Potentially add way to show one setting component in a modal in app toolbar (dark mode combobox)

Sounds like UX hasn't quite decided on this either, so maybe wait on implementing. UX can probably let us know what they think

Focus mode in settings dialog

We just had sprint meeting and managed to clarify on the following:

ux is not thinking about which settings to implement first, as dev will be doing this already
ux will think about the overall settings hierarchy again (which entries should appear there in which order) + other small adjustments: https://github.com/paranext/ux/issues/152
ux will timebox a design for settings search or filtering: https://github.com/paranext/ux/issues/149
ux may continue to think about a user settings menu on the toolbar or postpone it: https://github.com/paranext/ux/issues/109
tab nav content and tab nav menu are out of scope for this and part of https://github.com/paranext/roadmap/issues/15
"focus mode" is not a priority
command menu (global search) is not a priority
showing one setting in a modal is not a priority

Issues to write (@jolierabideau will write them up. Thanks!):

Revise Settings dialog according to new UX design

Implement sidebar hierarchy - extension dropdown with each of that extension's setting groups under its dropdown
Put all the project settings in with the settings and make it all one dialog

Add support for receiving a project id and only showing settings for that project id

Put all of one extension's setting groups on the same page in cards. Clicking a setting group in the sidebar would scroll to that group
Use Switch instead of checkbox for booleans
Many other smaller adjustments and tweaks

Add Language dropdown to settings

Investigate possible language dropdown someone in SIL has already made
Make sure you can select multiple languages and type your own language code in
Shadcn combobox is probably a good start if SIL doesn't have a fitting one
Add this component to the settings as a special case for the specific settings that handle language? Look at the data type and use this if the setting default value is an array of strings that includes the string 'en'...?

Add ability to specify a specific setting when opening settings dialog

Add parameter to open settings dialog and open project settings dialog commands that is a setting key. When the settings dialog opens, navigate to that key.

Sync user settings so a user's settings follow them around between computers

Create a settings server for storing settings or use the Paratext Registry's existing means

There are concerns this may strain the Paratext Registry. How should we go about investigating such concerns and making this decison?

Add something to the settings schema to indicate whether the setting should be synced

Defer

Organizing existing settings - core and UX probably need to talk about what we want extensions to be able to do as the design seems to include organizational capabilities that are not possible right now such as mingling settings between extensions. This has not been settled and will need to wait til another time
Particular new settings and special components for settings - particular settings can hopefully wait til we implement them, and components probably should wait til extensions can provide components to edit settings
Settings search - not settled
Toolbar quick-access settings - not settled/priority
Focus mode - not priority
Command palette - not settings / not priority
Web view tab nav buttons from extensions - not settings / not priority

UX team, please let us know when these not settled things are settled. We can work out where to put them.
Regarding priorities, would you like to create new issues and put them on future epics where they are appropriate priorities? Or want to wait until you have finished designs to figure out what you want to do?

Thanks TJ.
I have a question regarding:

mingling settings between extensions

I've not seen or intended this. Can you give an example? Imho there are only separate pages like "my crazy extension", "custom toolbar buttons extension" and under project maybe things like "project plan", "checks configuration", "Emoji Reactions".
The only mingling I could think of is we have not thought through if extensions should be able to add sections to "display" and "behavior" or only below those. Maybe "scroll with other apps" is something that would come from an extension?? Also we have not been clear about where bcv settings would end up.
What is missing in the current design (only in case we want to make those configurable) is

a central place for keyboard shortcuts that includes extensions

For the small adjustments, search and toolbar we will let you know as soon as possible (probably in this order).

Yes for the "not a priority" things we should create tasks (where not yet done) and move them to a new or existing settings epic. let's decide this in the next roadmap meeting.

Having not talked to @Sebastian-ubs and @allisonparkk , I believe Checkbox vs Switch isn't an intentional design detail at this point. It's just what v0's AI came up with.

Hi @tjcouch-sil, as we are working on smaller style adjustments, the current version is this: https://b_lyq3fteaicn.v0.build/
Maybe that helps with a clearer understanding. IMHO "General" is NOT supposed to be a name, but the place where all not-project-related settings will end up in.
I have added a drawing with questions to the FigJam. Feel free to comment here or there

by the way: did you know you could install the v0 directly into a project (ideally into platform-bible-react)?
After clicking the "v0" button, there is a "Add to codebase" button.

Of course this code needs to be adapted (split into components, data moved out), but can save some time.
You might however want to wait until we finished

https://github.com/paranext/ux/issues/152
and maybe even
https://github.com/paranext/ux/issues/149

TJs reply (in my words):

Settings of core and each extension are put into a single container “name” each and merged together into one flat array.

This name only virtually exists as a back reference to the extension that added a settings group.

Currently a group has no unique identifier, there can be similarly named groups in each extension / core.

TODO: Decide as ux if we can use this or if the data structure has to change.

https://www.figma.com/board/WnpfPfYdiTX9GvLBX8YbTb/Platform-Settings?node-id=393-1647&t=BAco3Z5w3WKzbd2L-4

Hi @tjcouch-sil, after discussing with the we ended up with wish for the following structure: https://www.figma.com/board/WnpfPfYdiTX9GvLBX8YbTb/Platform-Settings?node-id=416-2145&t=lwI8mWZAKgHNrGUx-4
Assuming that we can have (localized) Extension names as containers in the navigation sidebar.
I feel that we might get away without a general change of the settings structure (only added properties), but please let us know.

We want to throw together general settings of all core+bundled extensions+pt extensions (in the ui), each bringing their own settings group onto the page
We need a way to identify groups and specific settings
a) for direct navigation
b) to be able to pull them out and show them separately (e.g. account and language)
We need to define the order of settings groups inside a container; we need to define the order of containers inside project settings
We need to display some project settings in different containers (e.g. "project properties" and "user permissions"). If this requires them to be different extensions, that's fine to ux. Whatever technically and logically works better for dev. If that seems strange the settings structure should change to allow an extension/core to have multiple containers.
optional: Let an extension have no settings group and only settings
We need to a way to define that a setting would (not) show up in the settings ui

slightly updated comments (hope that helps for clarity)

💡 It might be impossible for underlying Settings data model to always match what UX desires for their presentation in the Settings menu. Therefore, it might be expedient to introduce some sort of cheat to accomodate such mismatches, for example:

Aliases, or
Decouple the settings data from the display of them. Core and various extensions can create Settings modules, and these modules only get displayed if they're manually declared in a settings display file. (This is analogous to how components get used in .jsx or .svelte. or .mdx).

Just an idea 😊

Thanks Alex. TJ specifically asked about requirements from ux, which might require changing the data model. Having a data driven ui and manually defining which settings end up in which place are two contrary (or supplementary) concepts.
After talking to Ian again, we ended up with the following
https://www.figma.com/board/WnpfPfYdiTX9GvLBX8YbTb/Platform-Settings?node-id=463-382&t=CY4wA5A5PJ3KnXfb-4
UX thinks thet best user experience will be with the following. This certainly requires the data model to change. In case it is a lot of effort option 1 or 2 could be reconsidered, but the wish would be to use 3.

Note that the last comment is about Paratext 10 presenting itself to the user as a unity, so that they do not (have to) think about it consisting out of Extensions. Therefore core + bundled extensions + PT10 extensions is to be presented as "this is Paratext" to them. To make them find things in an easy and intuitive way, we would not want to throw all settings from those on one big page, but have the ability to arrange them on logical pages, even when they are technically stored in / served by different parts.
Users of Paratext 10 would only see additional extensions they can get through the Marketplace as extensions, and so listing them separately makes sense.
For Platform however it might be fine to show all settings similar to where they are stored. But as it is unclear who the users of Platform would be (besides extension developers) it is not possible to cater for them.

@tjcouch-sil @jolierabideau are there any comments or concerns about the proposed settings hierarchy? As far as I understand this is not currently possible with the data model. The things I see missing is (for core, bundled and paratext extensions):

id (I assume required for https://github.com/paranext/paranext-core/issues/1251?)
a free definition onto which page a group / individual setting would end up
optional groups
ui order
"Do not show in ui"

Is that right? How are we gonna solve those requirements?

TJ and I talked about this one a bit. The right approach at this point is to probably change our schema for settings to be more like the schema we have for menus where platform can define some "root" starting points and identify locations in the hierarchy where extensions can contribute their own settings (which they can also mark as extensible for other extensions to add onto, if desired).
This will take a little redesign work compared to what is in the settings spec right now.

@lyonsil Will there be a new issue created for the settings hierarchy schema change, or will that be part of this story?
@jolierabideau I was able to recreate the design sidebar design in v0 close to what Ian created in Figma:
https://b_ng60yp8s2lf.v0.build/
You may try to copy the code (click "build with v0" below and "add to codebase" above)
Modifications from pure shadcn to mention:

using an indent on the menu items (group) <SidebarGroupContent className="pl-4"> better be
using a fix top margin, because otherwise it would span over the search <Sidebar className="top-[73px]">

Just watching yesterday's dev sprint planning and @tjcouch-sil saying (regarding internet settings)

we can't put any non-setting into the settings dialog.

Which I would like to challenge. The possibility to add other stuff like controls on top of what extensions can provide will be helpful. E.g. we have thought about adding a link to the extension marketplace or even being able to enable/disable extensions from within there.
But regarding the internet settings that might be fine.

just don't tell ux

😄👍

@Sebastian-ubs
The redesign and re-ordering needs its own issue. I think I have maybe seen an issue about this somewhere, but maybe it was a UX issue.
I will share more precisely the situation that led me to say "we can't put any non-setting into the settings dialog." Basically, I was saying there is not currently any place other than in the main process where settings are stored, and extensions can't freely put whatever they want into the settings dialog. There is no concept of storing settings elsewhere, and I'd argue it may not be wise to change that concept. However, others can listen in to the value of settings and do things based on that all they desire. We have not added a way for extensions to add their components into the settings dialog, but we are free to change that as we like. I have pictured it as providing one component for one setting up to this point, but I guess that could change. Of course, core can theoretically put whatever it wants into the settings dialog.

Thanks TJ, that sounds reasonable. I guess we are seeing a conflict here between technical limitation of "everything as an extension" vs. user experience of a user that considers Paratext a unity.
Another place where this conflict could appear is e.g. the Home/Open dialog and others may arise...
So we should ideally get together at a time and talk about the implications of this conflict, find 1 or few options for resolution and an easy decision tree when to apply which.

I've added

#1315

@roopa0222 Here is the testing criteria!

Searching

Right now it only searches the setting label, should hide the Card if there are no matching results

Project web views should have an “Open project settings” menu item, when clicked should open a settings tab with no sidebar and only settings for that specific project.
If you try to enter an invalid value, should show an error message below the input
If you enter a valid value, should update the setting
If you start the app, open the settings tab, stop the app, and reopen WITHOUT removing local storage, everything should load correctly. It will not remember what tab you were on, it will default back to the first extension settings tab

New mockups in response to PR #1354

Design page PR#1354 Feedback combined (Figma)

which combines

https://www.figma.com/design/zJWrApZ8AyPGxNHdndbkTz/Settings-Dialog-%23434?node-id=1056-899 and
https://www.figma.com/design/zJWrApZ8AyPGxNHdndbkTz/Settings-Dialog-%23434?node-id=968-369

@ianhewubs @jolierabideau @Sebastian-ubs

Testing Repo Steps:

Searching : Right now it only searches the setting label, should hide the Card if there are no matching results
Need clarification if the 'Heading labels' are included in the search.
Notice that the search only finds the field labels but not the headings

Project web views should have an “Open project settings” menu item, when clicked should open a settings tab with no sidebar and only settings for that specific project.
It is working as expected.

If you try to enter an invalid value, should show an error message below the input
Are there any known set of validation rules?
I entered numbers in the Interface Language and it did not complain.

If you enter a valid value, should update the setting
It is working as expected. But not sure if all the fields have validations

If you start the app, open the settings tab, stop the app, and reopen WITHOUT removing local storage, everything should load correctly. It will not remember what tab you were on, it will default back to the first extension settings tab.
It is working as expected.


Issue with WaveAnalyticAssetCollection retrieval causing ENOENT error and missing folders

Description:
I encountered an issue when trying to retrieve WaveAnalyticAssetCollection metadata using the Salesforce CLI (sf-cli). The command used was:
sf project retrieve start --target-org PROD_RM --ignore-conflicts --manifest fullRetrieveArtifact/package_WaveAnalyticAssetCollection_0.xml --output-dir fullRetrieve_Artifact/retrievePack/dir_630 --wait 240

The package.xml used was:
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>EstrazioneAdoptionRolling</members>
        <members>EstrazioneAdoptionRolling_ogni_luned</members>
        <members>Estrazione_primo_del_mese</members>
        <members>EstrazioniOneShot</members>
        <members>Ogni_6_Mesi</members>
        <members>Scarti_SDD</members>
        <members>Signature_Pad</members>
        <members>TP_di_QCD_non_creati</members>
        <members>subentri</members>
        <name>WaveAnalyticAssetCollection</name>
    </types>
</Package>

The command failed with the following error:
Error (ENOENT): ENOENT: no such file or directory, stat '/Users/ea_enel/Documents/01_repo/sfdc-ci-enel-mercato/fullRetrieve_Artifact/retrievePack/dir_630/main/default'

I created the missing directory manually:
mkdir -p /Users/ea_enel/Documents/01_repo/sfdc-ci-enel-mercato/fullRetrieve_Artifact/retrievePack/dir_630/main/default

However, the result was:
 ›   Warning: Nothing retrieved

Warnings
==========================================================================================================================================================================================
| File                   Problem
| ────────────────────── ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
| unpackaged/package.xml Unable to retrieve file for id 0lk1n000000PAsD of type WaveAnalyticAssetCollection. The Collection Signature_Pad has no associated Folder.
| unpackaged/package.xml Unable to retrieve file for id 0lk1n000000TN1K of type WaveAnalyticAssetCollection. The Collection EstrazioneAdoptionRolling has no associated Folder.
| unpackaged/package.xml Unable to retrieve file for id 0lk1n000000TN1P of type WaveAnalyticAssetCollection. The Collection EstrazioneAdoptionRolling_ogni_luned has no associated Folder.
| unpackaged/package.xml Unable to retrieve file for id 0lk1n000000TN1U of type WaveAnalyticAssetCollection. The Collection EstrazioniOneShot has no associated Folder.
| unpackaged/package.xml Unable to retrieve file for id 0lk1n0000000019 of type WaveAnalyticAssetCollection. The Collection subentri has no associated Folder.
| unpackaged/package.xml Unable to retrieve file for id 0lk1n000000TN1F of type WaveAnalyticAssetCollection. The Collection Scarti_SDD has no associated Folder.
| unpackaged/package.xml Unable to retrieve file for id 0lk1n000000Kyjp of type WaveAnalyticAssetCollection. The Collection TP_di_QCD_non_creati has no associated Folder.
| unpackaged/package.xml Unable to retrieve file for id 0lk1n000000blJO of type WaveAnalyticAssetCollection. The Collection Ogni_6_Mesi has no associated Folder.
| unpackaged/package.xml Unable to retrieve file for id 0lk1n000000TN1Z of type WaveAnalyticAssetCollection. The Collection Estrazione_primo_del_mese has no associated Folder.

The directories I created were deleted during the process.
I obtained the list of WaveAnalyticAssetCollection using the command:
sf org list metadata --metadata-type WaveAnalyticAssetCollection --target-org 'PROD_RM' --json

Here is a snippet of the result:
{
  "status": 0,
  "result": [
    {
      "createdById": "00524000003qiItAAI",
      "createdByName": "AE66628",
      "createdDate": "2023-06-26T15:11:48.000Z",
      "fileName": "wave/EstrazioneAdoptionRolling.collection",
      "fullName": "EstrazioneAdoptionRolling",
      "id": "0lk1n000000TN1KAAW",
      "lastModifiedById": "00524000003qiItAAI",
      "lastModifiedByName": "AE66628",
      "lastModifiedDate": "2023-10-17T07:56:32.000Z",
      "manageableState": "unmanaged",
      "type": "WaveAnalyticAssetCollection"
    },
    {
      "createdById": "00524000003qiItAAI",
      "createdByName": "AE66628",
      "createdDate": "2023-07-31T08:02:13.000Z",
      "fileName": "wave/Ogni_6_Mesi.collection",
      "fullName": "Ogni_6_Mesi",
      "id": "0lk1n000000blJOAAY",
      "lastModifiedById": "00524000003qiItAAI",
      "lastModifiedByName": "AE66628",
      "lastModifiedDate": "2023-07-31T08:05:07.000Z",
      "manageableState": "unmanaged",
      "type": "WaveAnalyticAssetCollection"
    },
    {
      "createdById": "0051n000006NJ2MAAW",
      "createdByName": "AF09898",
      "createdDate": "2022-03-28T07:35:56.000Z",
      "fileName": "wave/Signature_Pad.collection",
      "fullName": "Signature_Pad",
      "id": "0lk1n000000PAsDAAW",
      "lastModifiedById": "0051n000006NJ2MAAW",
      "lastModifiedByName": "AF09898",
      "lastModifiedDate": "2022-07-01T15:59:30.000Z",
      "manageableState": "unmanaged",
      "type": "WaveAnalyticAssetCollection"
    },
    {
      "createdById": "00524000003qiItAAI",
      "createdByName": "AE66628",
      "createdDate": "2023-07-10T07:44:49.000Z",
      "fileName": "wave/Estrazione_primo_del_mese.collection",
      "fullName": "Estrazione_primo_del_mese",
      "id": "0lk1n000000TN1ZAAW",
      "lastModifiedById": "00524000003qiItAAI",
      "lastModifiedByName": "AE66628",
      "lastModifiedDate": "2023-07-31T08:42:10.000Z",
      "manageableState": "unmanaged",
      "type": "WaveAnalyticAssetCollection"
    },
    {
      "createdById": "00524000003qiItAAI",
      "createdByName": "AE66628",
      "createdDate": "2023-06-26T15:15:06.000Z",
      "fileName": "wave/EstrazioneAdoptionRolling_ogni_luned.collection",
      "fullName": "EstrazioneAdoptionRolling_ogni_luned",
      "id": "0lk1n000000TN1PAAW",
      "lastModifiedById": "00524000003qiItAAI",
      "lastModifiedByName": "AE66628",
      "lastModifiedDate": "2023-07-31T08:42:11.000Z",
      "manageableState": "unmanaged",
      "type": "WaveAnalyticAssetCollection"
    },
    {
      "createdById": "0051n000009O1LFAA0",
      "createdByName": "A436721",
      "createdDate": "2024-01-04T09:20:32.000Z",
      "fileName": "wave/subentri.collection",
      "fullName": "subentri",
      "id": "0lk1n0000000019AAA",
      "lastModifiedById": "0051n000009O1LFAA0",
      "lastModifiedByName": "A436721",
      "lastModifiedDate": "2024-01-04T09:20:33.000Z",
      "manageableState": "unmanaged",
      "type": "WaveAnalyticAssetCollection"
    },
    {
      "createdById": "0050Y000000ehYYQAY",
      "createdByName": "A230940",
      "createdDate": "2023-11-06T16:02:30.000Z",
      "fileName": "wave/TP_di_QCD_non_creati.collection",
      "fullName": "TP_di_QCD_non_creati",
      "id": "0lk1n000000KyjpAAC",
      "lastModifiedById": "0050Y000000ehYYQAY",
      "lastModifiedByName": "A230940",
      "lastModifiedDate": "2023-11-06T16:02:30.000Z",
      "manageableState": "unmanaged",
      "type": "WaveAnalyticAssetCollection"
    },
    {
      "createdById": "0051n000006NJ2MAAW",
      "createdByName": "AF09898",
      "createdDate": "2022-06-21T11:06:26.000Z",
      "fileName": "wave/Scarti_SDD.collection",
      "fullName": "Scarti_SDD",
      "id": "0lk1n000000TN1FAAW",
      "lastModifiedById": "0051n000006NJ2MAAW",
      "lastModifiedByName": "AF09898",
      "lastModifiedDate": "2022-06-21T11:06:26.000Z",
      "manageableState": "unmanaged",
      "type": "WaveAnalyticAssetCollection"
    },
    {
      "createdById": "00524000003qiItAAI",
      "createdByName": "AE66628",
      "createdDate": "2023-06-26T15:21:35.000Z",
      "fileName": "wave/EstrazioniOneShot.collection",
      "fullName": "EstrazioniOneShot",
      "id": "0lk1n000000TN1UAAW",
      "lastModifiedById": "00524000003qiItAAI",
      "lastModifiedByName": "AE66628",
      "lastModifiedDate": "2023-07-31T08:05:09.000Z",
      "manageableState": "unmanaged",
      "type": "WaveAnalyticAssetCollection"
    }
  ],
  "warnings": [
    "org-api-version configuration overridden at 61.0"
  ]
}

Request:

Please investigate and resolve the issue with the WaveAnalyticAssetCollection retrieval causing the ENOENT error and the missing folders.
Ensure that the retrieval process does not delete manually created directories if they are required for the process.

System Information

{
  "architecture": "darwin-arm64",
  "cliVersion"<EMAIL_ADDRESS>  "nodeVersion": "node-v20.17.0",
  "osVersion": "Darwin 23.6.0",
  "rootPath": "/Users/ea_enel/.local/share/sf/client/2.64.8-21fd4e6",
  "shell": "zsh",
  "pluginVersions": [
    "@oclif/plugin-autocomplete 3.2.6 (core)",
    "@oclif/plugin-commands 4.1.3 (core)",
    "@oclif/plugin-help 6.2.16 (core)",
    "@oclif/plugin-not-found 3.2.22 (core)",
    "@oclif/plugin-plugins 5.4.15 (core)",
    "@oclif/plugin-search 1.2.12 (core)",
    "@oclif/plugin-update 4.6.6 (core)",
    "@oclif/plugin-version 2.2.15 (core)",
    "@oclif/plugin-warn-if-update-available 3.1.20 (core)",
    "@oclif/plugin-which 3.2.16 (core)",
    "@salesforce/cli 2.64.8 (core)",
    "apex 3.5.4 (core)",
    "api 1.3.1 (core)",
    "auth 3.6.70 (core)",
    "data 3.8.1 (core)",
    "deploy-retrieve 3.13.1 (core)",
    "info 3.4.13 (core)",
    "limits 3.3.36 (core)",
    "marketplace 1.3.0 (core)",
    "org 4.7.2 (core)",
    "packaging 2.8.12 (core)",
    "schema 3.3.37 (core)",
    "settings 2.3.24 (core)",
    "sobject 1.4.42 (core)",
    "source 3.5.21 (core)",
    "telemetry 3.6.17 (core)",
    "templates 56.3.24 (core)",
    "trust 3.7.35 (core)",
    "user 3.5.33 (core)",
    "sfdx-plugin-source-read 1.2.2 (user) published 9 days ago (Sat Oct 26 2024)"
  ]
}

Any news?

@Alfystar - there are 2 different problems here.  One of them is server side and one of them in the CLI.

The main issue is that nothing is retrieved.  It looks like there is a server side error reported in the retrieve result: Unable to retrieve file for id 0lk1n000000PAsD of type WaveAnalyticAssetCollection. The Collection Signature_Pad has no associated Folder.
The other issue is that when using the --output-dir flag, the ENOENT error is thrown which is a CLI bug.  I'll create a work item for this.

For issue 1 above, please open a support case so they can create an investigation for the owning server side team.  Tell the Support rep that the owning team is called, "TUA-Collaboration Slack Experience" in the Tableau Unifed Analytics cloud.

@Alfystar - a fix for the CLI issue has been applied in the latest version of the deploy-retrieve plugin.  If you'd like to test it out locally you can sf plugins install<EMAIL_ADDRESS>then run the retrieve command again.  When done testing locally you can sf plugins uninstall deploy-retrieve.  This fix will be in the next release candidate (next Wednesday) and in production the following Wednesday.

Hello @shetzel
Sorry for the delay, I only had the chance to get back on this topic now.
I followed the steps you told me but unfortunately the result remains the same:
14:25:35 ~/Documents/01_repo/sfdc-ci-enel-mercato  (release/R4_2024)
└─▶ $ mkdir -p /Users/ea_enel/Documents/01_repo/sfdc-ci-enel-mercato/fullRetrieve_Artifact/retrievePack/dir_630
14:25:44 ~/Documents/01_repo/sfdc-ci-enel-mercato  (release/R4_2024)
└─▶ $ sf project retrieve start --target-org PROD_RM --ignore-conflicts --manifest WaveAnalyticAssetCollection_package.xml --output-dir fullRetrieve_Artifact/retrievePack/dir_630 --wait 240
 ›   Warning: Plugin @salesforce/plugin-deploy-retrieve (3.15.18) differs from the version specified by sf (3.15.17)
(node:53230) Warning: org-api-version configuration overridden at 61.0
(Use `node --trace-warnings ...` to show where the warning was created)
(node:53230) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.

 ────────────── Retrieving Metadata ──────────────

 Retrieving v62.0 metadata from<EMAIL_ADDRESS>using the v61.0 SOAP API

 ✔ Preparing retrieve request 8ms
 ✔ Sending request to org 202ms
 ✔ Waiting for the org to respond 777ms
 ✔ Done 0ms

 Status: Succeeded
 Elapsed Time: 1.03s

Error (ENOENT): ENOENT: no such file or directory, stat '/Users/ea_enel/Documents/01_repo/sfdc-ci-enel-mercato/fullRetrieve_Artifact/retrievePack/dir_630/main/default'

Warning: org-api-version configuration overridden at 61.0

If you confirm everything is ok, I think the problem persists, we also opened a case, as you suggested: ref:!00D300XsfG.!500Hx0fmacf:ref
We remain confident and thank you for the great effort you are putting into this problem!
Sincerely Alfystar

The fix (and a test for it) was merged and published to that version so not sure why you're still seeing the same error message.  https://github.com/salesforcecli/plugin-deploy-retrieve/commit/62e9cfa21e5dada4dc2541fd0245761fa312d701
You can try with the release candidate CLI version which should also now have the fix.  If you're still seeing that error I'd like to see the error stack trace.  If you append --dev-debug to the command it should output lots of debugging to the console in addition to the full error.
The customer case is being worked on by the server side team.  Last I checked, they think it's a permissions issue for the user performing the retrieve.

The output shows that the ENOENT error is no longer happening.  That was the CLI bug fix I mentioned was fixed.  The remaining error is being handled by your customer case with support and the server side engineering team.  For that issue you'll need to work with the Support team.


Client Screenshot on Injection Menu Key Combination

FiveM allows one to take screenshots of a client. When a key combination for a cheat menu is pressed first take a screenshot of client and make it wait a good amount of time for the client to actually open the menu before a screenshot is taken with Citizen.Wait(5000), after screenshot is taken, autoban. That way you can get the client screenshot, and probably capture the Cheat Menu open, and it's definite proof in case of a ban appeal. https://forum.cfx.re/t/api-dev-resource-screenshot-basic-make-screenshots-of-clients-games/234165

This is a good idea, will see if this can be realized in the near future

local CLIENT_ID = 'INSERT HERE'
			exports['screenshot-basic']:requestScreenshotUpload('https://api.imgur.com/3/upload', 'imgur', {
				headers = {
				['authorization'] = string.format('Client-ID %s', CLIENT_ID),
				['content-type'] = 'multipart/form-data'
			  }
			}, function(data)
			  local resp = json.decode(data)
			  --SEND LINK (resp.data.link) WITH CODE HERE
			end)
			Citizen.Wait(5000)


Intrigue - Apache is rendered as "HTTP Server"

This is because the "product" key just says "HTTP Server" and doesn't actually say "Apache". Not that useful...

Maybe we do vendor + product in cases like this?


RingNotepad: Add debug and run console features in nonWindows OS

Hello Mahmoud
These two features are now working as expected in Ubuntu but need to be tested in MacOS before being merged
I hope they are working good

Thanks

I will test them on macOS very soon
If they need an update, I will do it
Keep up the GREAT WORK