text:
Attach disk with docker images to micro-vms on boot

What does this PR do?
This PR optimizes micro-vm setup time by attaching a second disk to each VM on boot, and mounting it at a specified location.
This disk contains the docker images required for system-probe tests. This approach eliminates the need for sharing the docker images with each micro-vm and performing docker load, thus significantly reducing the tests jobs time.

Motivation

Additional Notes
Corresponding test-infra-definitions PR:
https://github.com/DataDog/test-infra-definitions/pull/387
https://datadoghq.atlassian.net/browse/EBPF-243

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

Reviewer's Checklist

[ ] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[ ] A release note has been added or the changelog/no-changelog label has been applied.
[ ] Changed code has automated tests for its functionality.
[ ] Adequate QA/testing plan information is provided if the qa/skip-qa label is not applied.
[ ] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

should we consider using memory optimized machine types?

We are not memory-constrained at the moment.

Looks like this failed?
error: Process exited with status 1: running " sudo virsh vol-create ci-22271412-4670-kernel-matrix-testing-22271412-global-pool /tmp/volume-ci-22271412-4670-kernel-matrix-testing-22271412-global-pool-docker-arm64.qcow2.xml":
    error: Failed to create vol from /tmp/volume-ci-22271412-4670-kernel-matrix-testing-22271412-global-pool-docker-arm64.qcow2.xml
    error: inaccessible backing store volume /home/kernel-version-testing/docker-arm64.qcow2: No such file or directory

Looks like this failed?
error: Process exited with status 1: running " sudo virsh vol-create ci-22271412-4670-kernel-matrix-testing-22271412-global-pool /tmp/volume-ci-22271412-4670-kernel-matrix-testing-22271412-global-pool-docker-arm64.qcow2.xml":
error: Failed to create vol from /tmp/volume-ci-22271412-4670-kernel-matrix-testing-22271412-global-pool-docker-arm64.qcow2.xml
error: inaccessible backing store volume /home/kernel-version-testing/docker-arm64.qcow2: No such file or directory

Yeah the job for arm64 docker disk in ami-builder failed due to docker rate limiting. Will try again today.

authors: brycekahle usamasaqib


text:
Handle Triage milestone in lint-milestone

What does this PR do?

Handle Triage milestone in lint-milestone.
Motivation

It is not a real milestone label, the PR would be ignored when generating QA cards.
Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

Reviewer's Checklist

[ ] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[ ] A release note has been added or the changelog/no-changelog label has been applied.
[ ] Changed code has automated tests for its functionality.
[ ] Adequate QA/testing plan information is provided. Except if the qa/skip-qa label, with required either qa/done or qa/no-code-change labels, are applied.
[ ] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

/merge

source: gharchive/pull-request

repo: DataDog/datadog-agent

license_type: permissive

license_source: github-api


text:
pkg/trace/api: add discovery endpoint

TODO:

[x] Add a test to ensure JSON keys never change regardless of field changes in the code.

Example response from http://localhost:8126/hello:
{
	"Version": "0.99.0",
	"GitCommit": "fab047e10",
	"GitBranch": "master",
	"BuildDate": "2020-12-04 15:57:06.74187 +0200 EET m=+0.029001792",
	"GoVersion": "1.15.6",
	"Endpoints": [
		"/v0.3/traces",
		"/v0.3/services",
		"/v0.4/traces",
		"/v0.4/services",
		"/v0.5/traces",
		"/v0.5/stats",
		"/profiling/v1/input"
	],
	"Features": [
		"nostats"
	],
	"Config": {
		"Enabled": true,
		"Hostname": "datadog-gbbr.local",
		"DefaultEnv": "gabriel.aszalos",
		"ConfigPath": "/opt/datadog-agent/etc/datadog.yaml",
		"Endpoints": [
			{
				"Host": "http://localhost:8888",
				"NoProxy": false
			}
		],
		"BucketInterval": 10000000000,
		"ExtraAggregators": null,
		"ExtraSampleRate": 1,
		"TargetTPS": 10,
		"MaxEPS": 200,
		"ReceiverHost": "localhost",
		"ReceiverPort": 8126,
		"ReceiverSocket": "",
		"ConnectionLimit": 0,
		"ReceiverTimeout": 20,
		"MaxRequestBytes": 52428800,
		"StatsWriter": {
			"ConnectionLimit": 0,
			"QueueSize": 0,
			"FlushPeriodSeconds": 0
		},
		"TraceWriter": {
			"ConnectionLimit": 0,
			"QueueSize": 0,
			"FlushPeriodSeconds": 0
		},
		"ConnectionResetInterval": 0,
		"StatsdHost": "localhost",
		"StatsdPort": 8125,
		"LogLevel": "debug",
		"LogFilePath": "/var/log/datadog/trace-agent.log",
		"LogThrottling": false,
		"MaxMemory": 0,
		"MaxCPU": 0,
		"WatchdogInterval": 10000000000,
		"ProxyURL": null,
		"SkipSSLValidation": false,
		"Ignore": {},
		"ReplaceTags": null,
		"AnalyzedRateByServiceLegacy": {},
		"AnalyzedSpansByService": {},
		"DDAgentBin": "/opt/datadog-agent/bin/agent/agent",
		"Obfuscation": null
	}
}

Hi @gbbr
What do values like those below mean? It looks to me like a feature flag hasn't been set. The client wouldn't expect these to be null but booleans. These would parse as false in some languages but I believe they are actually set by default in the trace agent.
"Obfuscation": null,
"ReplaceTags": null

This one looks like an actually nullable value, rather than the consequence of an unset feature flag, and I'd argue complete absence is a better policy in this case.
"ProxyURL": null

@richardstartin first off, nothing that is in the Config is a feature flag. A "feature flag" is simply an experimental option that may be enabled or not (and will eventually be removed in subsequent versions) currently showing up in FeatureFlags section.
Obfuscation and ReplaceTags are both objects, not booleans. I have made a new commit to leave this out from the response when they are null. They specify the configuration for the obfuscator, basically the contents of that section in the datadog.yaml file (see this link. As for the tag replacer, see this link. Most of what's in the Config key is from that file...

If it helps, here's a fully populated object from the tests: https://github.com/DataDog/datadog-agent/blob/c16442c8acbd858bd47bc40c3aef451e6aa6866b/pkg/trace/api/api_test.go#L687-L843

Removed ProxyURL, probably not interesting at all to a user...

@dougqh @richardstartin I took all of your feedback, and made the Go code uglier in order to get prettier JSON. I also manually selected which config options should show up, and removed any which seemed like they might contain sensitive information or be irrelevant to the user. Furthermore, I made the obfuscation configurations as booleans as requested.
Please check the updated PR description and let me know your thoughts.

authors: gbbr richardstartin


text:
Fix json.Marshal for aggregate timeseries response

What does this PR do?
json.Marshal for aggregate log timeseries responses will always return null values.  This change fixes the json marshal to correctly return the values for the timeseries.
What inspired you to submit this pull request?
I need to query the API for aggregated logs and the values for the timeseries are sort of important.
Link to the issue describing the bug that you're fixing.
Fixes https://github.com/DataDog/datadog-api-client-go/issues/1505
Additional Notes

Review checklist
Please check relevant items below:

[ ] This PR includes all newly recorded cassettes for any modified tests.

[x] This PR does not rely on API client schema changes.

[ ] The CI should be fully passing.

[ ] Or, this PR relies on API schema changes and this is a Draft PR to include tests for that new functionality.

Note: CI shouldn't be run on this Draft PR, as its expected to fail without the corresponding schema changes.

Thanks, we need a fix in the template, this should be done in #1508.

repo: DataDog/datadog-api-client-go


text:
tests: remove unstable warnings, fix test script

This removes the error in go 1.13, plus a few warnings

/azp run


text:
Registration types in registering components should be fx.Out and have group:"true" defined

From @ogaca-dd in #1:

I think having provides struct requires a lot of typing. What do you think about:

// define in ipcserver/component.go
type RouteProvider struct {
       fx.Out
       IPCRoute *ipcserver.Route `group:"true"`
}

// ipcserver.NewRoute will returns RouteProvider instead

func newFlare(deps dependencies) (Component, RouteProvider) {
      ....
      return f, ipcserver.NewRoute("/agent/flare", f.ipcHandler),
}

Pros: There is no need to define provides struct and it hides the logic of the group.
Note: Same technique could also applied to fx.in, ie, newFlare could take 2 args, dependencies and a new struct containing Registrations []*Registration group:"true". I don't know if it worth it.
Originally posted by @ogaca-dd in https://github.com/DataDog/dd-agent-comp-experiments/pull/1#discussion_r938975316

WIP - https://github.com/DataDog/dd-agent-comp-experiments/pull/new/issue13

source: gharchive/issue

repo: DataDog/dd-agent-comp-experiments


text:
chore: Update releaser scripts to generate CHANGELOG.

What and why?
Generate the CHANGELOG for a package from conventional commit messages instead of relying on manually updating the changelog.
This does not satisfy all the requirements of RUM-5667 but eliminates a particularly manual portion of releasing.
refs: RUM-5667
Review checklist

[ ] This pull request has appropriate unit and / or integration tests
[ ] This pull request references a Github or JIRA issue

Merging now that 2.8.0 is out.

repo: DataDog/dd-sdk-flutter


text:
Table names surrounded by back ticks are considered BIND_PARAMETER

I was missing the WithDBMS(mysql) lexer option

repo: DataDog/go-sqllexer

license: MIT


text:
BREAKING CHANGE Remove pyhdb

pyhdb library has some stability issue so we cannnot, in good faith, leave users exposed to it. From 7.35 onwards users will need to perform a manual install of hdbcli to use SAP Hana integration.
This PR:

Removes pyhdb from the agent
Removes pyhdb compatibility from the integration
Updates documentation to inform the user that they need to manually install hdbcli to use the integration, while before it was an optional step

This PR is best viewed hiding whitespace changes

/azp run PR Changes

authors: hithwen sarah-witt

repo: DataDog/integrations-core


text:
Use database config template in existing specs

What does this PR do?
Apply db template to integrations with the spec.yaml using the custom query options
Motivation

Additional Notes

Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] PR title must be written as a CHANGELOG entry (see why)
[ ] Files changes must correspond to the primary purpose of the PR as described in the title (small unrelated changes should have their own PR)
[ ] PR must have changelog/ and integration/ labels attached

And postgres?

authors: ChristineTChen hithwen


text:
npm installable javascript DJ client

Summary
This adds an ES6 javascript DJ client that's npm installable. This PR only includes the get endpoints to pull entities but in a follow-up PR I'll add the ability to create entities as well.
Test Plan
N/A (will follow up with tests)

[ ] PR has an associated issue: #
[ ] make check passes
[ ] make test shows 100% unit test coverage

Deployment Plan
N/A

Thanks @shangyian, updated the python builds to ignore the client/javascript directory then added an eslint scripts and some workflow steps to build and lint the js client.
@agorajek or @betodealmeida not urgent but we should add the javascript jobs to be required checks for merging PRs. Also we have to setup a release job using an npm access token just like we did with pypi. I went ahead and published the 0.0.1 version for now: https://www.npmjs.com/package/datajunction

repo: DataJunction/dj


text:
[Bug] 无主键的表, 怎么同步?

Search before asking

[X] I had searched in the issues and found no similar issues.

What happened
在测试cdc单表及cdcsource整库同步时, 有遇到有些表是没有设置主键的, 这时候同步就会报错。
这个问题实际上看起来有点不合理， 因为没有主键的表，要实现cdc方式的同步。但是有些库，特别是bi库，会大量存在无主键，
但多字段可确定唯一记录的场景（不会在建表的时候就把复合主键建上）
大家是怎么解决的？因为有时候是不方便给这些表去加主键的。
这个后续会有解决方案吗？
What you expected to happen
希望无主键的表, 也能实现同步
How to reproduce
无
Anything else
No response
Version
0.6.7
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

可以在Sink环节去订制无主键的处理，社区源码里所提供的是有主键的处理方式，从而实现思路上来讲，这些都很容易扩展，关键看如何去定义参数来确定哪些字段是主键效果。

感谢回复.
你指的是去改造源码, 还是指在建sink表时有处理方法?

可以在Sink环节去订制无主键的处理，社区源码里所提供的是有主键的处理方式，从而实现思路上来讲，这些都很容易扩展，关键看如何去定义参数来确定哪些字段是主键效果。

感谢回复.
你指的是去改造源码, 还是指在建sink表时有处理方法?

Sink时处理

可以在Sink环节去订制无主键的处理，社区源码里所提供的是有主键的处理方式，从而实现思路上来讲，这些都很容易扩展，关键看如何去定义参数来确定哪些字段是主键效果。

感谢回复.
你指的是去改造源码, 还是指在建sink表时有处理方法?

Sink时处理

感谢回复.
我昨天测试出问题所在了,  源物料表可以无主键, 但是过程中的sink, 且目标表必须有主键, 否则同步会失败.
且mysql的处理方式还比较特殊.

mysql 整库集成的参数中可否添加设置black.list 过滤下有问题的表（无主键的表，或者不想同步的表），虽然有table-name参数能控制要同步的表，有时表太多操作起来不方便，当定位到1000张表中有1张导致整库集成失败时，通过black.list 参数过滤掉就不会影响到整个作业999张表的执行。

mysql 整库集成的参数中可否添加设置black.list 过滤下有问题的表（无主键的表，或者不想同步的表），虽然有table-name参数能控制要同步的表，有时表太多操作起来不方便，当定位到1000张表中有1张导致整库集成失败时，通过black.list 参数过滤掉就不会影响到整个作业999张表的执行。

这个建议我支持,  有时候排掉几张表要方便的多,  不过table-name 好像是支持正则的, 只不过写正则其实真的不容易

authors: aiwenmo cooltnt deepthinkin

repo: DataLinkDC/dlink


text:
chore(main): release 0.6.0

:robot: I have created a release beep boop
0.6.0 (2024-07-14)
Features

Move the Python bindings into a standalone repository (c789ee4)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

0.6.0
:sunflower:

repo: DataTriny/accesskit-python


text:
(feat) - Ollama

Didn't add token consumption re-implementation in this PR. will add another one.

Make input and output same as what openai endpoints expect for ollama.
For instance, when output is same formatting, this then becomes directly compatible with our other components which extract output from choices.
If you want to keep both options, then by default you can keep openai formatting & add a varibale named let's say 'api_format' = 'original' to use ollama endpoints.

repo: DataformerAI/dataformer


text:
Memory leak on log.setup

Version 8.3 (8E162) . Swift 3.1
XCGLogger at "4.1.0"
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
...
let log = XCGLogger.default
...
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
...
log.setup(level: .debug, showFunctionName: false, showThreadName: false, showLevel: true, showFileNames: true, showLineNumbers: true, writeToFile: logPath, fileLevel: .debug)

On last line app crash reporting

Message from debugger: Terminated due to memory issue

This is the same issue as #193

Thanks. Tracking this under #193. But your XCGLogger at "4.1.0" comment has me concerned. Since there is no 4.1.0 yet. #195 seems related to that as well.

@xandros6 issue is fixed now. Can you please close this?

Think this was an issue with the bad tags, which should now be fixed with the 5.0.1 release. But please re-open this if you continue to see issues.

authors: DaveWoodCom sohayb xandros6

repo: DaveWoodCom/XCGLogger

license: mit

license_source: bigquery


text:
upgrade to new pandas api, replace append with concat

upgrade to pandas 2.0

Hey, I thought I should say that this change is approved but isn't merged yet!
For those who have the error after running the example in the README.md, you can install @ertosns 's working fork of this package from the command line.
pip3 uninstall Historic_Crypto
pip3 install git+https://github.com/ertosns/Historic_Crypto.git

its about one year that your project notifications coming  for me. why this is happening?

authors: BamdadTabari augustus-thomas ertosns


text:
Problems Syncing with Blueretro Module

Trying to sync with Nintendo Switch and PC work fine, but trying to sync with bluetooth modules that require holding the sync button while turning on the controller do not work. For example, when trying to connect to a blueretro module such as this one (https://www.amazon.com/gp/product/B0BTLVLV4W/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1) I cannot get it to connect. The instructions on the module say to hold the sync button (which works on my other switch controllers) or to reprogram the bluetooth address using a computer for other controllers (such as the PS3).
What would be the best way to connect this controller via bluetooth to the blueretro module if it asks to hold the sync button? Or is there a way to manually type in a bluetooth mac address?

Hey, just got one built. The Pico seems to attempt to auto sync with a BlueRetro without a button when powered on, causing the BlueRetro device to stop blinking it's blue LED, however after a few seconds the Pico seemingly automatically disconnects, and the BlueRetro device resumes blinking. The Pico works with my switch and the BlueRetro works with other controllers, but not with each other unfortunately. Hopefully there will be an update to have it work.

Hi! Could you solve the compatibility between BlueRetro and this project?

Hey, just got one built. The Pico seems to attempt to auto sync with a BlueRetro without a button when powered on, causing the BlueRetro device to stop blinking it's blue LED, however after a few seconds the Pico seemingly automatically disconnects, and the BlueRetro device resumes blinking. The Pico works with my switch and the BlueRetro works with other controllers, but not with each other unfortunately.

what firmwares are you guys using? My picos just brick for any FW after the initial one.

authors: Roet-Ivar Sbrivas TheIcedTeaAddict pavementtar

repo: DavidPagels/retro-pico-switch


text:
Build c51f988 Failing on Pterodactyl

Built using mvn
container@pterodactyl~ java -Xms128M -XX:MaxRAMPercentage=95.0 -jar Barrel.jar
Starting Barrel Proxy software
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Config file not found! Terminating...
Assuming theres a missing dep in pom.xml but thats a guess, hopefully its an easy fix

Okay so that was from a missing config (after digging through the main Barrel issues >.>) , now facing a connection issue to my bedrock server (running the right release afaik)
WARNING: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
io.netty.handler.codec.DecoderException: org.cloudburstmc.protocol.bedrock.codec.PacketSerializeException: Error whilst deserializing UpdateBlockPacket(flags=[], blockPosition=(13, 67, 67), definition=null, dataLayer=0)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98)
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at org.cloudburstmc.netty.handler.codec.raknet.ProxyInboundRouter.channelRead(ProxyInboundRouter.java:66)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.cloudburstmc.netty.handler.codec.raknet.common.EncapsulatedToMessageHandler.channelRead0(EncapsulatedToMessageHandler.java:15)
at org.cloudburstmc.netty.handler.codec.raknet.common.EncapsulatedToMessageHandler.channelRead0(EncapsulatedToMessageHandler.java:8)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.cloudburstmc.netty.handler.codec.raknet.AdvancedChannelInboundHandler.channelRead(AdvancedChannelInboundHandler.java:48)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.cloudburstmc.netty.handler.codec.raknet.AdvancedChannelInboundHandler.channelRead(AdvancedChannelInboundHandler.java:48)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.cloudburstmc.netty.handler.codec.raknet.AdvancedChannelInboundHandler.channelRead(AdvancedChannelInboundHandler.java:48)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.cloudburstmc.netty.handler.codec.raknet.common.RakSessionCodec.onOrderedReceived(RakSessionCodec.java:352)
at org.cloudburstmc.netty.handler.codec.raknet.common.RakSessionCodec.checkForOrdered(RakSessionCodec.java:333)
at org.cloudburstmc.netty.handler.codec.raknet.common.RakSessionCodec.handleDatagram(RakSessionCodec.java:326)
at org.cloudburstmc.netty.handler.codec.raknet.common.RakSessionCodec.channelRead(RakSessionCodec.java:217)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.cloudburstmc.netty.handler.codec.raknet.AdvancedChannelInboundHandler.channelRead(AdvancedChannelInboundHandler.java:48)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.cloudburstmc.netty.handler.codec.raknet.client.RakClientProxyRouteHandler.channelRead(RakClientProxyRouteHandler.java:50)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:97)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.cloudburstmc.protocol.bedrock.codec.PacketSerializeException: Error whilst deserializing UpdateBlockPacket(flags=[], blockPosition=(13, 67, 67), definition=null, dataLayer=0)
at org.cloudburstmc.protocol.bedrock.codec.BedrockCodec.tryDecode(BedrockCodec.java:59)
at org.cloudburstmc.protocol.bedrock.netty.codec.packet.BedrockPacketCodec.decode(BedrockPacketCodec.java:59)
at org.cloudburstmc.protocol.bedrock.netty.codec.packet.BedrockPacketCodec.decode(BedrockPacketCodec.java:19)
at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)
... 85 more
Caused by: java.lang.NullPointerException
at org.cloudburstmc.protocol.bedrock.codec.v291.serializer.UpdateBlockSerializer_v291.deserialize(UpdateBlockSerializer_v291.java:35)
at org.cloudburstmc.protocol.bedrock.codec.v291.serializer.UpdateBlockSerializer_v291.deserialize(UpdateBlockSerializer_v291.java:15)
at org.cloudburstmc.protocol.bedrock.codec.BedrockCodec.tryDecode(BedrockCodec.java:57)
... 89 more

Do you use custom blocks on your PocketMine server?

No the Bedrock server was running Vanilla Bedrock, tried each release of 1.20.70 I could find - does it require PocketMine specifically?

@DavyCraft648 this is the problem i face you need to fix this for create a egg for pterodactyl.
Ignore my grammar

@DavyCraft648 this is the problem i face you need to fix this for create a egg for pterodactyl. Ignore my grammar

Using LiteLoader I was able to connect, thats not something I can do egg side - Eggs just run files they cant code them

I've never tried it with Bedrock Dedicated Server yes, I did make it for PocketMine
Bedrock Dedicated Server doesn't have public code so I think it would be more difficult to debug it However, try turning off the settings in BDS regarding hashed block IDs

Connecting via LiteLoader though I drowned, had the same message as #3 and was unable to break blocks or swim (as I was underwater) - Assuming known problem? xD

authors: DavyCraft648 GabBiswajit ImKringle


text:
issue needs/triage comment updated to include community channels

What kind of PR is this?:

/kind chore
/request @izzycsy to review
What this PR does / why we need it:
Added community channels to be part of needs/triage comment message for users to get help faster.

/request @monstrobishi to review again because it got stale

repo: DeFiCh/app


text:
Make all cogs be plugins.

So, I have been thinking of a few particular reason to make all cogs plugins.

Plugins have an Json Text file reader provided by the Core. This means that any changes to that file can be noticed when reloading the plugin.
When changing the current json text file for the cogs in here Any changes would not be noticed without restarting the bot. This can drastically be improved as well as improve some issues in the core itself.
Each cog can then have their own json file that contains all of their message responses. This would imporve a lot of things as well as stated from #2 on this list.

As such converting all cogs that are not plugins to plugins would be an excelent way to not only get what I want for #2 & #3 on the list but also decrease the number of restarts on the bot to restarts when dependencies update that I always pip install when I know they updated. A Prime example would be the aiohttp v2.0.7 release happening soon.

Done in https://github.com/DecoraterBot-devs/DecoraterBot-cogs/commit/f238e15121208e038f51e536ab670222ef9b6d00

repo: DecoraterBot-devs/DecoraterBot-cogs


text:
Improve funcionality for gate and garage door

Hello,
This is a nice work, but i'd love if you also do it for a garage door, and for a gate?
Since the principal is the same its just a visual change and everyone whould love.
Thanks
Garage door:

Gate:

I was wondering if anyone has adapted this card to use for the garage door?

authors: DrSpaldo joaopequeno-git

repo: Deejayfool/hass-shutter-card


text:
each of session id will use the all padding data, if it will cause information to travel through

hi, each of session id will use the all padding data, if it will cause information to travel through?

Could you please further explain your question? I didn't understand you.

no problem, thank you for response ～

authors: Songweiping seven-xu

repo: DeepGraphLearning/RecommenderSystems


text:
Why only send the position of root joint of each frame into the model as input?

Hi,
I was kind of curious that why only send the position of root joint of each frame into the model as input?
I mean after parsing the .bvh file, we could get the positions of every joint at every frame. But we just use the root joint's position as input, is it because other joints' position info is redundant?
Mant thanks!

As we only generate the rotation and global position, we find it's sufficient to use rotation as the network's input. However, we do use the position information in rec_loss and ee_loss to get more accurate result.

As we only generate the rotation and global position, we find it's sufficient to use rotation as the network's input. However, we do use the position information in rec_loss and ee_loss to get more accurate result.

Oh, it makes sense! To reconstruct the bvh file, we just need the position info of the root joint. I should have known that.

authors: PeizhuoLi crissallan

repo: DeepMotionEditing/deep-motion-editing


text:
Managing number of steps in a batch

iterate_rnn in Traj class makes iterator of batches. A tail of the batches are zero padded for arranging length of episodes. For this reason we couldn't control number of steps in a batch.

This problem can be solved by incorporating random_batch_rnn to iterate_rnn.

repo: DeepX-inc/machina


text:
fix #140

fix #140 and done run_diayn,py test in my computer.
Please check!

Could you add test for DIAYN?

Done adding a test of DIAYN.
Please check 👍

authors: rarilurelo ven-kyoshiro


text:
Update network with RWS-structures

We'll update our OSM-based network to follow RWS-structures as presented 12 dec 2023 (see below).
Tasks:

[ ] generate a hydamo:sluis populated via a notebook
[ ] force the network to follow hydamo:sluis

@ngoorden; we miss in the South-West Delta:

Hartelkering
Vokeraksluizen
Bergsediepsluis
Katse Heule: https://downloads.rijkswaterstaatdata.nl/rws_legger/dwarsprofielen/48E-114-01.html
Sluiscomplex Terneuzen

Case (Borgharen):

network has node within distance defined by crest_width (doorstroombreedte) of weir-node.
Nodes and edges are moved towards weir-node

original:

moved network:

Case (linne stoney):

[ ] network has no node on edge crest_width / 2
[ ] project point on edge and split edge; creating a new node
[ ] move new node to point

original

Merwedekanaal-Utrecht-Nieuwegein (uit NIS, ter verificatie met RWS).
[ ] Koninginnensluis
[ ] Zuidersluis
[ ] Noordersluis
[ ] sluis Oog en Al
[ ] sluis bij Den Hommel
[ ] sluisje Vleutense wetering 31H-357
[ ] Gemaal, sluis en brug Vleutense Wetering 31H-356
[ ] Muntsluis
In DM zit:

Merwedekanaal: Muntsluis -Oog en Al - Noordergemaal
Merwedekanaal: Zuidersluis- syfon Noordersluis onder ARK- (Doorslagsluis) - Koninginnensluis

RWS kunstwerken in Prinses Margrietkanaal-Eemskanaal (in NIS)
[ ] Prinses Margrietsluis (Lemmer)
[ ] Terhornse sluis (staat iha open, bij Sneek)
[ ] Gaarkeuken
[ ] Dorkwerdersluis
[ ] Oostersluis
[ ] Driewegsluis
[ ] Slochtersluis
[ ] Groevesluis-Zuid
[ ] Groevesluis-Noord
[ ] Zeesluizen Farsum
In DM kennen we:

Prinses-Margrietkanaal: Lemmer -Friese boezem-Gaarkeuken
Gaarkeuken/Electraboezem-Driewegsluis-Fivolingo boezem
Gaarkeuken/Electraboezem-Oostersluis-Eemskanaal
Eelectraboezem - Reitdiep/Dorkwerd-verbindingskanaal-Eemskanaal<->Winschoterdiep

@gijsber; terechte opmerkingen. Ons lijstje bevat vrijwel uitsluitend alle kunstwerken die op de randen liggen van KRW-lichamen:

Brabantse kanalen: 1 KRW-lichaam
ARK: 1 KRW-lichaam
Lemmer-Delftzijl; geen KRW-lichaam. Ook zitten deze waarschijnlijk al in de regionale modellen
Merwedekanaal (alles niet ARK rond Utrecht) zit waarschijnlijk in het HDSR-model

Voorstel:

1 en 2 pakken we op in een verfijning van het Ribasim-HWS model; nw issue na inbouw van deze 61 complexen, sturing met hoofd- en nevenkranen.
3 en 4 pakken we op bij de integratie van de regionale modellen van Wetterskip, NZV en HDSR

Hoi @d2hydro lijkt me uitstekend. deze aanvulling was vooral om te zorgen dat we de aanvullende RWS-kunstwerken (en kanaalverbindingen) scherp hebben.

Nav gesprek met Geert:
NBMLK systeem
In het NBMLK systeem komt water vanuit de ZuidWillemsvaart (ZWV) binnen vanuit Belgie (Loozen). Onder normale omstandigheden stroomt op de kruising een klein deel rechtsaf naar Panheel, gaat het grootste deel linksaf en een beetje rechtdoor de Noordervaart op.
De oorsprong van dit water is de Maas Monsin) waar via het Maasakkoord een deel toebedeeld wordt aan de Zuid-Willemsvaart.
Geert raad aan om uiteindelijk wel het model door te trekken tot Monsin en het waterakkoord in het model op te nemen.
Als de Maas weinig water heeft komt er weinig water in de ZWV en is er te weinig voor Brabant beschikbaar. Het Kanaal Wessem-Nederweert (KWN) zakt uit vanwege de schutsluis en dit water wordt (op basis van peilbeheer) opgetopt door het gemaal Panheel. Hiervoor zit in DM een verdeelsleutel die alleen bij lage Maasdebieten water aftakt naar het kanaal Wessem-Nederweert in de wetenschap dat de ZWV op dat moment te weinig water heeft gekregen in Maastricht.
Wat we voorlopig kunnen doen is twee keer toepassen van een fractional flow, namelijk (1) bij kruising ZWV-KWN, sluis(bij lage debieten niets rechtsaf naar Panheel, bij hogere debieten een deel rechtsaf naar Panheel), (2) bij Panheel: bij lage debieten instroom naar KWN, bij hoge debieten geen instroom.
Op termijn kan dit via peilbeheer.
Sluis I vs Markkanaal. Dit zou ik nu dichtzetten en op termijn via peilbeheer Markkanaal regelen.
ARK
KWA (nog niet opgenomen) kan gekoppeld aan Lobith debiet.
Irenesluizen uiteindelijk op peilbeheer ARK-Noord. Voor nu is 25m3/s doorvoer voldoende.
Stuw Hagestein uiteindelijk op peilbeheer totdat het debiet bij de Waal (Tiel) een ondergrens bereikt. Dan gaat de keersluis van de Bernhardsluizen open en bepaalt de Waal het peil op de Nederrijn. (keersluis kan alleen hoge Waal keren, niet hoge waterstand in ARK-betuwepand). Marijkesluis staat open.
Bernhardsluizen voorlopig kunnen een vast debiet (schutverlies Waal-->ARK) hebben.

All done (long time ago)

authors: DanielTollenaar d2hydro gijsber

repo: Deltares/Ribasim-NL


text:
Fix getindex of local truth_values with global condition_idx

This fixes a
BoundsError: attempt to access 2-element Vector{String} at index [4]

A test model that doesn't work without this is here (I also have code to generate this):
2Basins_2Pumps_1_Boezem_TargetLevelBasin1.zip
Though perhaps it's better to see if we can easily update one of our own test models to trigger this path.

[x] add test

Reported by @harm-nomden-sweco.

Added to #716.

repo: Deltares/Ribasim


text:
Foutje in voorbeeldscript van evaluate_gxg

In GitLab by @evaschoonderwoerd on May 30, 2022, 12:02
Dit staat er nu:
import imod
heads = imod.idf.open("head*.idf").sel(time=heads.time.dt.year >= 2000)
gxg = imod.evaluate.calculate_gxg(heads)

Dit moet het worden:
import imod
heads = imod.idf.open("head*.idf")
heads = heads.sel(time=heads.time.dt.year >= 2000)
gxg = imod.evaluate.calculate_gxg(heads)

In GitLab by @JoerivanEngelen on Feb 17, 2023, 10:19
Fixed in https://gitlab.com/deltares/imod/imod-python/-/merge_requests/176

repo: Deltares/imod-python


text:
disv_converter: Broadcasting bug with well package

In GitLab by @JoerivanEngelen on Jul 14, 2023, 14:18
See example here
Due to a bug with broadcasting n_times too many wells are generated:
94 times & 94 indices.

The disv_converter is likely going to be removed in v1.0.

authors: JoerivanEngelen Manangka


text:
Shapely STRtree versus scipy KDTree for snapping

I've currently used the scipy KDTree with a sparse distance matrix to get snapping candidates, but this obviously requires scipy.
It might be worthwhile to use the shapely STRtree instead; we just have to build the CSR form ourselves.

With some 1.3 million points:
def locate_scipy(geometry, max_distance):
    xy = shapely.get_coordinates(geometry)
    tree = KDTree(xy)
    return tree.sparse_distance_matrix(tree, max_distance=max_distance).tocsr()

%timeit matrix = locate_scipy(out.geometry, 2.0)
1.67 s ± 55.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

repo: Deltares/pandamesh


text:
feat(directive): add whitelist for allowed attributes on element

fix #11

:tada: This PR is included in version 2.3.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

repo: Demivan/fluent-vue


text:
Training details on data augmentation

Hi!
This work is very impressive. I have a question regarding the training pipeline for the student model with pseudo labels:
Are you following the exact same loss for the student training compared with V1?
That means: applying the data augmentation (color distortion, gaussian blurring, CutMix) during training.

Yes. But in V2, we find that when training smaller models (e.g., ViT-S and ViT-B-based models) with the pseudo label from the largest ViT-G-based model, the augmentations are not necessary.

authors: LiheYoung zaiweizhang


text:
🛑 Larimarca is down

In 0cef03f, Larimarca (http://larimarca.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Larimarca is back up in 3fa2b01.


text:
DxDataGrid CellTemplate Not Working Properly

Hi,
When a dxTemplate is defined inside a dxDataGrid and the datasource is not ready before first load it fails drawing the grid. I hope that you can reproduce the issue introducing the dxDataGrid dataSource from a service or setting it inside ngAfterViewInit().
The error: n.owner is not a function at DxTemplate. (dx.all.js:10) from _cleanPreviousContent -> o.cleanData -> _cleanTemplates
It seems that you are cleaning content of nothing.
If the dataSource is ready then it works as expected. If you have a dataSource before first load and then you change it, it works too.
Thank You

¿#85?

Hello,
Yes, looks like #85 should fix it. We will research it as soon as possible.

It seems that #85 Fixed this.

authors: Aden-git Angelminster


text:
typeText replace option doesn't work when the input already has a value that fit maxlength

What is your Test Scenario?
Replacing the old value in the text input with a new value. The old value has a length that fit maxlength.
What is the Current behavior?
The new value doesn't replace the old value.
What is the Expected behavior?
The new value replace the old value.
What is your web application and your TestCafe test code?

Your website URL (or attach your complete example):
The example app is just a simple html form.
<form>
    <input type="text" id="name" maxlength="5">
</form>

Your complete test code (or attach your test files):
import { Selector } from 'testcafe';

fixture `Example`
    .page `file:///path/to/form.html`;

test('Example test', async t => {
    await t
        .typeText('#name', '12345') // Input the old value.
        .typeText('#name', 'abcde', { replace: true }) // Replace the new value.
        .expect(Selector('#name').value).eql('abcde'); // Assert the input value.
});

Your complete configuration file (if any):
Not using configuration file.

Your complete test report:
Actually it's not getting any error.
 Running tests in:
 - Chrome 88.0.4324.146 / macOS 10.15.7

 Example
 ✖ Example test

   1) AssertionError: expected '12345' to deeply equal 'abcde'

      + expected - actual

      -'12345'
      +'abcde'

Screenshots:

Steps to Reproduce:

Create an example html file.

<form>
    <input type="text" id="name" maxlength="5">
</form>

Create an example test file.

import { Selector } from 'testcafe';

fixture `Example`
    .page `file:///path/to/form.html`;

test('Example test', async t => {
    await t
        .typeText('#name', '12345') // Input the old value.
        .typeText('#name', 'abcde', { replace: true }) // Replace the new value.
        .expect(Selector('#name').value).eql('abcde'); // Assert the input value.
});

Execute this command

testcafe chrome example.js

Check the behavior.

Your Environment details:

testcafe version: 1.10.1
node.js version: v14.6.0
command-line arguments: testcafe chrome example.js
browser name and version: Chrome 88.0.4324.146
platform and version: macOS 10.15.7

Thank you for the example. I reproduced the issue.

@AlexKamaev
Hi, thanks for reproducing the issue.
If it's not a critical bug, I'm wondering that can I try to fix it by myself?

You need to take a look at the following method:
https://github.com/DevExpress/testcafe/blob/46460d16e044abff52bff497aaec29b20022ed21/src/client/automation/playback/type/type-text.js#L242
I modified it as follows:
function _typeTextToTextEditable (element, text) {
    const elementValue      = domUtils.getElementValue(element);
    const textLength        = text.length;
    let startSelection      = textSelection.getSelectionStart(element);
    let endSelection        = textSelection.getSelectionEnd(element);
    const isInputTypeNumber = domUtils.isInputElement(element) && element.type === 'number';

    if (!simulateBeforeInput(element, text, browserUtils.isChrome))
        return;

    let needProcessInput = simulateTextInput(element, text);

    if (needProcessInput)
        needProcessInput = simulateBeforeInput(element, text, browserUtils.isSafari);

    if (!needProcessInput)
        return;

    // NOTE: the 'maxlength' attribute doesn't work in all browsers. IE still doesn't support input with the 'number' type
    let elementMaxLength = !browserUtils.isIE && isInputTypeNumber ? null : parseInt(element.maxLength, 10);

    if (elementMaxLength < 0)
        elementMaxLength = browserUtils.isIE && browserUtils.version < 17 ? 0 : null;

    const newElementValue = elementValue.substring(0, startSelection) + text + elementValue.substring(endSelection, elementValue.length);

    if (elementMaxLength === null || isNaN(elementMaxLength) || elementMaxLength >= newElementValue.length) {
        // NOTE: B254013
        if (isInputTypeNumber && browserUtils.isIOS && elementValue[elementValue.length - 1] === '.') {
            startSelection += 1;
            endSelection += 1;
        }

        domUtils.setElementValue(element, newElementValue);

        textSelection.select(element, startSelection + textLength, startSelection + textLength);
    }

    // NOTE: We should simulate the 'input' event after typing a char (B253410, T138385)
    eventSimulator.input(element, text);
}

And now, the test is successfully passed.
If you want to create a PR, you can take my method and test it with more complex scenarios.
Also, you need to add your test to the following folder:
https://github.com/DevExpress/testcafe/tree/master/test/functional/fixtures/regression
Please take a look at any other test in this folder and make a similar one.
Thank you in advance.

repo: DevExpress/testcafe


text:
Blank on top window, hides everything else

Current behavior
Running the application, first displays a blank window and then the app window. The window that is displayed first, remains on top of all others, cannot be moved or closed and only goes away when the application is closed. However, it renders the application (and rest of the computer) unusable.
At times, it works as if it's click-through (even though the mouse if over it, it can affect UI elements that are behind it).
This also appeared for me when I first installed preview 4 (the first v2 I installed), but stopped after a restart. Now, after several restarts, it doesn't go away.
Also, it appears even on multiple desktops. I may open DevToys on desktop 1, switch to desktop 2 and the blank window will re-appear
How to reproduce it (as minimally and precisely as possible)
In my case, it is enough to start the app.
Expected behavior
Even if this window must open before everything else, it should be hidden/go away.
Screenshots

Workaround
None...
Affected platforms
Windows
Affected DevToys kind
DevToys (app with GUI)
DevToys Version
Version 2.0-preview.5
Relevant Assets/Logs
2024-08-18T21:38:09.9511471+02:00	Information	[DevToys.Core.FileHelper]	[0]	Cleared temp files in 0.2746ms
2024-08-18T21:38:09.9601615+02:00	Information	[DevToys.Core.Mef.MefComposer]	[LogDiscoveringPlugin]	Discovering plugin in 'C:\Users\there\AppData\Local\Programs\DevToys Preview\Plugins\DevToys.Tools'...
2024-08-18T21:38:10.0650859+02:00	Information	[DevToys.Core.Mef.MefComposer]	[LogMefComposition]	MEF composed 114 parts from 6 assemblies in 107.3382ms
2024-08-18T21:38:10.0826349+02:00	Information	[DevToys.Windows.MainWindow]	[2]	MEF, services and logging initialized in 190.7751 ms
2024-08-18T21:38:10.0827085+02:00	Information	[DevToys.Windows.MainWindow]	[1]	App is starting...
2024-08-18T21:38:10.8626166+02:00	Information	[DevToys.Windows.MainWindow]	[4]	Running Windows with WebView 127.0.2651.105
2024-08-18T21:38:10.8872613+02:00	Information	[DevToys.Windows.MainWindow]	[3]	App main window's UI loaded in 804.2242 ms
2024-08-18T21:38:10.9254514+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'Base64ImageEncoderDecoder' tool instance manager.
2024-08-18T21:38:10.9268356+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'Base64TextEncoderDecoder' tool instance manager.
2024-08-18T21:38:10.9278538+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'CertificateDecoder' tool instance manager.
2024-08-18T21:38:10.9287863+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'ColorBlindnessSimulator' tool instance manager.
2024-08-18T21:38:10.9297010+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'CronParser' tool instance manager.
2024-08-18T21:38:10.9305977+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'DateConverter' tool instance manager.
2024-08-18T21:38:10.9314671+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'EscapeUnescape' tool instance manager.
2024-08-18T21:38:10.9323364+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'GZipEncoderDecoder' tool instance manager.
2024-08-18T21:38:10.9332096+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'HashAndChecksumGenerator' tool instance manager.
2024-08-18T21:38:10.9340840+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'HtmlEncoderDecoder' tool instance manager.
2024-08-18T21:38:10.9351007+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'ImageConverter' tool instance manager.
2024-08-18T21:38:10.9359755+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'JsonFormatter' tool instance manager.
2024-08-18T21:38:10.9368498+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'JSONPathTester' tool instance manager.
2024-08-18T21:38:10.9377312+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'JsonTableConverter' tool instance manager.
2024-08-18T21:38:10.9386534+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'JsonWebTokenEncoderDecoder' tool instance manager.
2024-08-18T21:38:10.9396346+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'JsonYamlConverter' tool instance manager.
2024-08-18T21:38:10.9404875+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'ListCompare' tool instance manager.
2024-08-18T21:38:10.9413381+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'LoremIpsumGenerator' tool instance manager.
2024-08-18T21:38:10.9422219+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'MarkdownPreview' tool instance manager.
2024-08-18T21:38:10.9430943+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'NumberBaseConverter' tool instance manager.
2024-08-18T21:38:10.9439496+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'PasswordGenerator' tool instance manager.
2024-08-18T21:38:10.9447856+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'QRCodeEncoderDecoder' tool instance manager.
2024-08-18T21:38:10.9456238+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'RegExTester' tool instance manager.
2024-08-18T21:38:10.9464658+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'SqlFormatter' tool instance manager.
2024-08-18T21:38:10.9473022+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'TextAnalyzerAndUtilities' tool instance manager.
2024-08-18T21:38:10.9481627+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'TextCompare' tool instance manager.
2024-08-18T21:38:10.9490527+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'UrlEncoderDecoder' tool instance manager.
2024-08-18T21:38:10.9499290+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'UUIDGenerator' tool instance manager.
2024-08-18T21:38:10.9508424+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'XmlFormatter' tool instance manager.
2024-08-18T21:38:10.9517674+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'XMLTester' tool instance manager.
2024-08-18T21:38:10.9537155+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'Extensions Manager' tool instance manager.
2024-08-18T21:38:10.9543269+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'Settings' tool instance manager.
2024-08-18T21:38:10.9550508+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInitialized]	Initialized 'NoSearchResults' tool instance manager.
2024-08-18T21:38:10.9582272+02:00	Information	[DevToys.Core.Tools.GuiToolProvider]	[LogToolInstancesCreated]	Instantiated 32 tools in 38.1213ms
2024-08-18T21:38:12.2389846+02:00	Information	[DevToys.Blazor.Core.Services.FontService]	[LogImportThirdPartyFontsAsync]	Loaded 2 font(s) in 32.2464 ms and injected them in 485.4802 ms
2024-08-18T21:38:12.4395053+02:00	Information	[DevToys.Blazor.BuiltInTools.ExtensionsManager.ExtensionInstallationManager]	[0]	Extension DevToys.Tools is up to date
2024-08-18T21:38:18.9919159+02:00	Information	[DevToys.Core.Tools.GuiToolProvider]	[LogSetMostRecentUsedTool]	Set 'Settings' as the most recently used tool.
2024-08-18T21:38:18.9936640+02:00	Information	[DevToys.Core.Tools.GuiToolInstance]	[LogInstanceCreated]	Instance of 'Settings' tool created.
2024-08-18T21:38:42.6608387+02:00	Information	[DevToys.Core.Settings.SettingsProvider]	[LogSetSetting]	Setting 'DevToys.Core.MainWindowBounds' changed to '51,222,1653,1018'
2024-08-18T21:38:42.6623959+02:00	Information	[DevToys.Core.Settings.SettingsProvider]	[LogSetSetting]	Setting 'DevToys.Core.MainWindowMaximized' changed to 'False'
2024-08-18T21:38:42.6631975+02:00	Information	[DevToys.Core.FileHelper]	[0]	Cleared temp files in 0.0888ms
2024-08-18T21:38:42.6639622+02:00	Information	[DevToys.Core.Settings.SettingsProvider]	[LogSetSetting]	Setting 'DevToys.Blazor.UserPreferredNavBarState' changed to 'Expanded'

Hi,
This is the first time I see such an issue. I'd love your help to understand it better as I currently do not reproduce the issue.
A few questions:

What GPU do you have?
Do you have any sort of accessibility feature turned on in Windows?
Are you able to click through that gray rectangle in the middle of the screen? Does clicking through allows to, for example, navigate to a tool?
Are able to click on components outside of that rectangle?
Is there any menu showing up when doing a right click on this rectangle?
Are you able to move the window through the title bar at the top of the window? Or do you need to click and drag that rectangle in order to move the window?
You said it happened the first time you ran 2.0.4.0, then it did not reprpduce for some time, and now it happens constantly, is that correct?
Did you install DevToys through the Microsoft Store, installer or a Zip? Does the issue reproduce if you install with one of these options different than the one you used already?
Does the issue reproduce if you switch Windows or DevToys to Dark theme?

Thanks 😃

Hey there! Thanks for the immediate response! Replies inline:

What GPU do you have?
That's actually what I'm concentrating on myself. I'm on an ASUS Zenbook with a (totally inadequate) built-in Intel IrisXE GPU. The display is a high density OLED though, which pushes the GPU. The rest of the machine specs are: 16Gb RAM/1TB SSD/Win11 fully patched. GPU details:

I'm also using the latest drivers from Intel.
Do you have any sort of accessibility feature turned on in Windows?
No, nothing that I knowingly enabled.
Are you able to click through that gray rectangle in the middle of the screen? Does clicking through allows to, for example, navigate to a tool?
Yes, when the DevToys window is active, I can click through the rectangle  (which btw is not always in the center of the screen - it changes position everytime I start DevToys - it behaves as a simple window with its default settings, ie. no startup position settings in the code). Mouseover events work as well. However, if I change focus to another window (eg. Explorer), the rectangle blocks any interaction.
Are able to click on components outside of that rectangle?
Yes, I can click normally
Is there any menu showing up when doing a right click on this rectangle?
No, nothing
Are you able to move the window through the title bar at the top of the window? Or do you need to click and drag that rectangle in order to move the window?
The rectangle cannot be moved. If I click on the DevToys titlebar, I can move the window, but still the rectangle takes so much space, that I cannot do anything meaningful.
You said it happened the first time you ran 2.0.4.0, then it did not reprpduce for some time, and now it happens constantly, is that correct?
Yes and... no. After your reply I ran some more tests. I was actually able to get it working sometimes. It is happening MOST of  the time. I randomly got the normal behaviour (just a few times tho). And it did show SOME consistency running ok when I set the compatibility down to Windows 7, in which case it was 90% times ok, 10% not.
Did you install DevToys through the Microsoft Store, installer or a Zip? Does the issue reproduce if you install with one of these options different than the one you used already?
Unfortunately I don't remember how I installed 2.0.4.0, even though I think it was through GitHub-downloaded installer. Then I upgraded to 2.0.5.0 However, after your message, I uninstalled it, tried the portable 64bit version, the 64bit installer, the portable 32bit version - all behaved the same.
Does the issue reproduce if you switch Windows or DevToys to Dark theme?
Yes, it happens with both themes. However, there is one interesting thing here... If I change the theme to dark, it immediately goes to black bg, white text etc as it should. If I close the application and restart it, I get the rectangle and then white bg with white text and the app is even more unusable :)

I used SysInternal's Process Explorer which has a good tool to select processes by targeting windows, but it didn't actually help. Both the normal DevToys window and the problematic rectangle actually showed the same thing:

One last thing - don't think it will help that much, but you never know. I accessed my laptop remotely (meaning I got degraded colors etc) and got this:

I know it's not much, but there IS a pattern in there (which I can't see when I'm on the laptop). Maybe that pattern is familiar?
As I said in the beginning, it feels much more a problem of my GPU rather than the app. On my second Win11 machine and Mac it works fine :)
Still, I thought it'd be good to report it...
Let me know if this helped or if you need anything more...

Hey, after getting to the laptop and checking this post, I realised that the last image did not make sense. I tweaked it enough to make the design pattern stand out... Colours are messed up. Just note the design in case it rings a bell - not the colours.

Hi,
Thank you for all these details! It's very helpful.
It really sounds like a GPU-related issue, indeed. It seems like the background / Mica effect of the window is bleeding through the web view that displays DevToys UI.
Here is a potential workaround: Can you try disabling transparency effect in Windows? You can find it in Windows Settings app > Personalization > Colors > Transparency effects.
I'm also curious whether you encounter these "odd" colors in different part of Windows 11, such as Start Menu, Widgets, Settings app, Calculator app, Emoji (Win+;), Clipboard History (Win+V), Sounds setting flyout (Ctrl+Win+V).
Thank you :)

Hi again
ok, we got a winner!
As expected, it is GPU-related. it was actually not the Windows transparency effects, but your mention of the Mica effect, jolted my memory. Few months ago, for the heck of it I installed an app called Mica or Everyone (https://github.com/MicaForEveryone/MicaForEveryone)
THIS one is what was causing the issue. I don't actually know why, but closing the app or just disabling customizations for the DevToys process, is enough to fix the issue. I even tried upgrading MfE to the latest version, but it didn't help.
Any customization I try to apply using it, causes DevToys to show that blank window. So I just set it to ignore DevToys and it's all good!
Thanks so much for your time! Keep up the good work... Hopefully I'll be able to contribute with a couple of plugins in the near future...

Closing this issue

Glad you got it fixed 🙂

Just if you're curious, I've been chatting with the author of Mica For Everyone on the matter:

Wow, thanks for investigating this even further! You're the best!

authors: theremon veler

repo: DevToys-app/DevToys


text:
Duplicate Section of FAQ, Tracks

Scrolling through the Devtrack website, I noticed that there were duplicate sections (What do we do? Who are we? cards,  FAQ, and Tracks) present. I have attached the screenshot. I would like to work on this issue.

@harshmehta14 you are assigned.

Thanks for assigning it to me. Can you tell me which screen would you like to keep?

2nd screenshot you keep.

repo: DevTrackClub/DevTrackWebsite


text:
Layout de detalhes da Venda Quebrado

Ao instalar o módulo o layout fica assim , mas quando desativo o layout volta ao normal!

[2019-04-04 19:25:46] main.CRITICAL: Unsuccessful. Please, contact Rede. {"exception":"[object] (Rede\Exception\RedeException(code: 370): Unsuccessful. Please, contact Rede. at /var/www/html/XXXX/siteroot/vendor/developersrede/erede-php/src/Rede/Service/AbstractTransactionsService.php:86)"}

A forma de pagamento não é rede , minha loja usa dois métodos . acredito que esse erro é referente a pedidos que não estão na base da rede . Podemos pensar em uma solução juntos .


text:
Requirement for PyGObject <3.47 causes conflicts on Ubuntu 24.04

Commit DevilXD/TwitchDropsMiner@27dcc9c pinned the PyGObject library to version <3.47 to maintain compatibility with Ubuntu 20.04.
The default version of the gir1.2-gtk-3.0 package on 24.04, which to my knowledge is a dependency of the app, installs a version of PyGObject >3.47.
Pip will try to remove the existing newer package when installing the older one. However, since the package wasn't installed using pip, it cannot be uninstalled using pip.
I am not sure of a solution that would work for every case, but one possible solution for users may be to install an older version of the gir1.2-gtk-3.0 package if possible. I am yet to test this workaround.
In my situation this issue occurred in a docker container with a 24.04 base image. For my use case, it was sufficient to just change the base image to 22.04 and tweak a couple things (SimonAkers/docker-tdm@03c4bfa). I wanted to document this as an issue in case it shows up for someone else.

This problem can be entirely avoided by using a virtual environment to install the dependencies, so they don't conflict with system packages. You were installing the dependencies with --break-system-packages, which is usually a really bad idea.
Besides, unless you have some specific reason to require the latest version of Ubuntu, I'd recommend staying on the oldest LTS version anyway.

@guihkx thanks for the reply, here is my thought process.

This problem can be entirely avoided by using a virtual environment to install the dependencies, so they don't conflict with system packages.

To build some of the dependencies you need access to libraries which cannot easily be installed inside a venv (to my knowledge) such as for cairo. There exists vext, but I do not believe it supports all required packages. I may be wrong though, or there may be another solution.
I would appreciate any advice on how to run TDM strictly inside a venv if possible, as I'm aware that's an ideal solution.

You were installing the dependencies with --break-system-packages, which is usually a really bad idea.

For my use case in a rough docker container, it's acceptable usage. If it were on my host machine, then I agree it would not be very safe. However, if I can get everything inside a venv, I would not need to worry about it. Any advice?

I think you're mixing things up.
PyGObject only depends on pycairo, and so to build it, you only need the headers package (libcairo2-dev, which you do), and a compiler toolkit (usually just installing the build-essential package group is enough).
When those two main things are ready, running pip install will build and install those dependencies from source automatically for you.

I would appreciate any advice on how to run TDM strictly inside a venv if possible, as I'm aware that's an ideal solution.

I'm honestly not too experienced with Docker, but you can probably come up with something adapted from this article I found.

@SimonAkers Docker usage is against the Project Goals, and is thus unsupported. If you run into issues, you're on your own.
Project Goals can be found here: https://github.com/DevilXD/TwitchDropsMiner?tab=readme-ov-file#project-goals
@guihkx While I really appreciate you helping other people with their Linux-related issues, please remember that most of the existence of this project depends solely on my availability, and I'm already struggling with keeping up to Twitch changing things around (see #462). TDM was never meant to be deployed anywhere, and making that easier leads us closer to people deploying farms with thousands of instances, and then Twitch putting in efforts to stop that and prevent TDM from working. This has already happened multiple times in the past (read more under the project goals), and while we can't prevent it entirely, we can at least try to discourage doing so.

@DevilXD Appreciate your work, and I understand your reasons for not supporting docker.
My motivations for opening this issue were not to promote docker usage, but to make this potential issue known. It's not necessarily limited to docker, this issue can happen in standard Ubuntu 24.04 desktop. So I wanted to put any potential solutions out there in case a typical user has the problem.
I agree with closing the issue though, it's not something you technically are responsible for anyways. Again, thanks for your hard work!

I see. Thank you for understanding =)

authors: DevilXD SimonAkers guihkx

repo: DevilXD/TwitchDropsMiner


text:
Add Command Line Interface mode

Add support for pure Command Line Interface, by reimplementing GUIManager as CLIManager, for the case running on server without GUI Desktop as a 24*7-hour bot.
In the CLI mode, I only implemented the display of a few core information, because many functions are probably not required when it is simply running as a bot on a server (and it requires less work). Configuration through the user interface is not supported, so you need to edit settings.json manually (should not be a problem for someone using command line).
Logging in is supported. The user just needs to open the link in their browser (not required to be on the same machine as the server) and enter the code.
Usage
Add --cli argument to launch in CLI mode.
Screenshot
It works fine on my Ubuntu server:

Help wanted: In main.py, to make it works with CLI mode, I have to move the parser to before creating the window temporarily, so that works in the following flow:

parse arguments
skip creating window if --cli flag is set (or else an error will occur if it tries to create a window in a non-GUI environment)

In the current implementation, an error will occur if the parser output something to the message box. A better method is needed, maybe direct the parser output to the console? I am not sure whether it will bring any additional problems, so I did not fix it.

Just from my personal perspective: I'm a user in China (UTC+8 Time zone), where some Twitch live streaming in place like Europe starts at an unfriendly local time (like at mid-night) here. I don't want to keep my laptop on and idling for a whole night, but sometimes if I don't it's hard to get the full drop rewards. (In particular, the game I'm playing now, "Tom Clancy's Rainbow Six Siege", requires 4 hours' watching to get a single drop. And sometimes drops are even only enable for official live rooms, so I have to follow the official campaign schedule to get the full rewards.)
In this case, the best solution is to run this program on my VPS (and it's display-less). That's the initial reason why I wrote this fork.
It might be more convenient of allowing it to run on server non-stop, even for personal use. Also this PR doesn't cancel the limit of linked accounts, maybe still be able to prevent abuse to some degree (though adding CLI mode still facilitates for multi-instance mining and profiting, of course).
Anyway, I can understand your considerations if you decide to refuse adding this feature eventually. And thanks for your review comments <3

Honestly this is 1 of 2 things I really hope gets implemented.. the second hopefully being a lot easier once this gets implemented and that would be getting this to run in docker.

@JourneyOver You should check out the project goals: https://github.com/DevilXD/TwitchDropsMiner#project-goals
This PR isn't getting merged, because it leads to abuse. It goes as far as me considering pulling down the entire project, but it hasn't been bad enough yet to do so. At least as far as I'm aware.

I honestly have no idea, why do you consider using it through cli to be "abuse".
It's not like without it it's impossible to set it up on some private server to run 24/7. You literally designed it to launch in a tray on startup and mine as long as pc is running.
I'm in a situation, where there's a surprise campaign running, but out of like 50 enabled channels there's only one live and I'm not sure if I'd be able to get all drops before campaign ends, especially if that channel goes offline. I'd like to leave this program running overnight, but my gaming pc's fans are quite loud even when idling, so I'd prefer not to have to sleep in a room with pc on. I could run it on a raspberry pi that I own, which has passive cooling and is completely silent, but it's not plugged to any monitors, so it boots in headless mode and it would be a lot of hassle to boot it in a way where I can connect via vitual desktop.
So I'm failing to understand your thought process. I could run it 24/7 in a background on my pc. I could run it 24/7 on any remote server with remote desktop protocol. But the convenience of being able to run it on my own machine that happens to boot without gui is just too much, and you would consider this "abuse"?

@ignis05 The reasoning behind it is already explained in the Project Goals section, a link to which you seem to have intentionally ignored. There are links to issues within said section, that exactly explain why I really don't want this project to be possible to run in headless mode. I wanted to do it at the beginning, but I don't want to now. It only leads to abuse and nothing else. I don't want thousands of instances running on some remote server, for profit purposes.
In case you still can't understand it - this is a hobby project. I'm a one-man development team, currently taken away by a 6/10 work cycle since a month ago, and for the next month or so. I don't have the time to resolve the existing issues, yet alone design a foolproof system that won't end up crashing and sending the miner into an endless restart loop. Even if I wanted to, this project is far from being ready to become "headless" in a sense where you can "set and forget" it.
In other words, this project isn't ready for headless, and I'm not doing anything to help it, because I don't have the time for it, and it only leads to abuse, so why bother. Due to abusers, we can't have nice things - this is the sad truth of it.
For more abuse examples, see #84, also linked in the project goals section: https://github.com/DevilXD/TwitchDropsMiner#project-goals

I did not ignore anything, it's just that the project goals don't really mention anything other than it being possible to "abuse" and being at the bottom of the priority list. While on this pr you simply said This PR isn't getting merged, because it leads to abuse..
Like I said, it's not like running it in its current state as a 24/7 farm is impossible, it's just a bit more tedious to set up. I understand your reasons for not wanting your personal project to be used against your will, even if I disagree with the sentiment that automatically farming drops with like 60% uptime on a personal pc is great, but doing the same thing on a headless server with better uptime or including farming channel points and drops for unlinked accounts is taking it too far and straight up abuse. But I guess when it comes to morality, everyone draws the line one step ahead of where they stand.
You asked earlier in the thread in regard to the headless mode, Why exactly is this needed for a personal, single-account utility program like this one?, I just tried to give my perspective on a scenario that I was in that I believe might have met those criteria.
But while I might disagree on what counts as abuse, I understand that in the end, this is your project, and you are free to do anything you want with it. I appreciate the unpaid work you've already put into this and that you chose to share it with everyone, and I wish you the best, regardless of what you choose to do with this pr.

Personally, I use it on a headless Linux server, as I described in #17. Once you figure it out, it really requires little to no effort already. I even have a script that can updated to latest Master (.bat), so I could have it be 0 maintenance if I combined those.
The reason for doing this is partly because of #80 and partly so that I don't have to have my PC running 24/7 (for drops that are only one stream from one channel during a specific event), which spares additional wear on my PC and saves power.
Given it's really easy to implement headless, whether by finding this pull request, the docker pull request, or using Xvfb as I did, any server farm described in https://github.com/DevilXD/TwitchDropsMiner/issues/84#issuecomment-1331709361 could easily be deployed anyways. I think it's reasonable to assume, that anyone seeking profit would be willing to put the extra bit of effort in and thus it's only really inconveniencing ethical users, who might not have the knowledge, time or incentive to implement the bot in this way.

This project started as a small, personal script, that I eventually had an idea of sharing with others. From the very beginning of this project, the idea was to have a console application, capable of being deployed on a remote server and mostly forgotten about. As a personal bot of sorts, it'd take care of only a single Twitch account, and that's it. A simple, helpful tool, reliving you of having to keep track of which channels are online, changing the channel when the watching one goes offline, and having to be there on time to claim the drop. All of this info is still present in the README.md file, with only a couple of corrections here and there, ever since the first very few versions have been published.
However, some people didn't understand what this project is for. They wanted to "go big" - and have massive farms of hundreds, thousands of accounts, all mining drops for personal profit. I've been literally involuntarily dragged into a "deal" between two people, where one was selling a "server with 10 instances on it" to the other, where the other person was contacting me and demanding to know when I'd fix a critical-at-the-time issue (#68), preventing the miner from claiming the drops.
It changed me. I no longer want to make it possible to run this on a remote server, and this is the least I can do to try and limit the misuse of this project. Yes, it makes it "inconvenient" for people who would want to do that, but as I cannot control how many instances you're going to run on that servers of yours, I cannot allow for it. I do not support misuse and abuse - and if it's going to continue, this project will simply be discontinued entirely. I'm not going to waste my time for the profit of others, since again - this isn't the purpose of this project.

anyone seeking profit would be willing to put the extra bit of effort in

There are other projects like this out there, that make it much easier to deploy. I don't get why someone cannot just use that one instead. As far as my own personal experience goes, "putting in effort" is enough of a deterrent to limit the abuse on it's own. There's no way to stop it, unfortunately, as any open-source project can be repurposed to bypass it's limitations, with enough effort put in. It's been doing a good enough job, ever since "the change" happened, and I didn't head from anyone trying to make a giant farm since.

thus it's only really inconveniencing ethical users, who might not have the knowledge, time or incentive to implement the bot in this way

Good. Again, being able to run this on a remote server isn't the purpose of this project - not anymore. Nobody forces anyone to use this thing either. If one doesn't find it suitable for their purpose - they shouldn't use it. Simple. If anyone would like to have a miner they can deploy on a server, as I said before, there are other, more suitable projects out there, that can do exactly that, Please use that one instead.

While I disagree, it's a matter of opinion at this point. At the end of the day, I'm just grateful you publish your work for free, making it available to all of us. Thank you. <3


text:
Last changes similar to specimen-procesor

Changes after functional testing, similar changes as we made in the processing service

Fixed the test coverage


text:
[pact-jvm-provider-junit5] GC overhead limit exceeded

Hi, I'm using the latest pact-jvm-provider-junit5 beta, (but the issue seems to occur with previous versions too) and trying to run a simple test like this
@Provider("valkyrie")
@PactBroker(tags = ["master"], host = "host.url", scheme = "https")
@Tag("pact")
class ValkyrieProviderTest {

    @TestTemplate
    @ExtendWith(PactVerificationInvocationContextProvider::class)
    fun test(context: PactVerificationContext) {
        context.verifyInteraction()
    }

    @BeforeEach
    fun setup(context: PactVerificationContext) {
        context.target = AmpqTestTarget()
    }

    @PactVerifyProvider("a hermes verdict")
    fun `an hermes verdict is generated`(): String {
        val stream = mock<MessageChannel>()
        val outboundStreamingChannel = mock<OutboundStreamingChannel> {
            on { stream() } doReturn stream
        }
        val producer = VerdictStreamProducer(...)

        producer.transmit(...)

        val messageCaptor = ArgumentCaptor.forClass(GenericMessage::class.java)
        verify(stream).send(messageCaptor.capture(), any())
        return messageCaptor.value.payload as String
    }
}

When running it from the IDE, it works perfectly fine, however, when running it from gradle using a custom test task, see below, it constantly crashes.
tasks {
  create<Test>("pact") {
    useJUnitPlatform { includeTags("pact") }
    // set system properties for pact
  }
}

Verification Failed - Uncaught exception during scan

Failures:

0) a hermes verdict
      Uncaught exception during scan

0 - Uncaught exception during scan
java.lang.OutOfMemoryError: GC overhead limit exceeded

java.lang.AssertionError:
0 - Uncaught exception during scan
java.lang.OutOfMemoryError: GC overhead limit exceeded

	at au.com.dius.pact.provider.junit5.PactVerificationContext.verifyInteraction(PactJUnit5VerificationProvider.kt:78)
	at com.olx.karma.valkyrie.pact.ValkyrieProviderTest.test(ValkyrieProviderTest.kt:38)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:532)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:171)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:167)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:114)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:59)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:108)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:157)
	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:133)
	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.lambda$execute$2(TestTemplateTestDescriptor.java:101)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
	at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
	at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:270)
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:101)
	at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:108)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)
	at java.util.ArrayList.forEach(ArrayList.java:1257)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:112)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)
	at java.util.ArrayList.forEach(ArrayList.java:1257)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:112)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at com.sun.proxy.$Proxy2.stop(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:412)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
	at java.lang.Thread.run(Thread.java:748)

Am I doing something wrong? Moreover, this failure occurs only with an AmpqTestTarget and not with a HttpTarget

As explained in https://stackoverflow.com/questions/1393486/error-java-lang-outofmemoryerror-gc-overhead-limit-exceeded, your test must be generating a lot of temporary objects. And the error Uncaught exception during scan is probably because you have a large classpath that is being scanned to find the annotated method to call.
Can you provide the Java version you are using as well as the memory options used (like -Xmx..). Also, if you enable the system property pact.verifier.classpathscan.verbose in the tests it might show what it is doing.
You can also try restricting the scan to just your packages by providing the list of packages to the AmpqTestTarget() constructor.

Thanks @uglyog, with the package passed as parameter the issue disappeared. I discovered now that I have a couple of jvm settings in the gradle.properties file, so, that might explain the difference between an IDE run and a Gradle one.

authors: gmariotti uglyog

repo: DiUS/pact-jvm


text:
Race condition on stale params

We currently have a race condition where we:

Set parameters on the detector
Stale params has not yet gone high
We wait for stale params to go low but it's already low
We set the bit depth on the filewriter to that on the detector but the detector one is "stale"

e.g.:
Params set up here....
[2022-10-03 15:48:13,449] Artemis eiger INFO: before wait: stale_params 0 bit_depth 32
Wait for 0 here (but still 0)
[2022-10-03 15:48:13,451] Artemis eiger INFO: after wait: stale_params 0 bit_depth 32
Start waiting for 0 again:
[2022-10-03 15:48:13,552] Artemis eiger INFO: after wait 0: stale_params 1 bit_depth 32
[2022-10-03 15:48:13,653] Artemis eiger INFO: after wait 1: stale_params 1 bit_depth 32
[2022-10-03 15:48:13,754] Artemis eiger INFO: after wait 2: stale_params 1 bit_depth 32
[2022-10-03 15:48:13,855] Artemis eiger INFO: after wait 3: stale_params 1 bit_depth 32
[2022-10-03 15:48:13,956] Artemis eiger INFO: after wait 4: stale_params 1 bit_depth 16
[2022-10-03 15:48:14,057] Artemis eiger INFO: after wait 5: stale_params 1 bit_depth 16
[2022-10-03 15:48:14,159] Artemis eiger INFO: after wait 6: stale_params 1 bit_depth 16
[2022-10-03 15:48:14,260] Artemis eiger INFO: after wait 7: stale_params 1 bit_depth 16
[2022-10-03 15:48:14,361] Artemis eiger INFO: after wait 8: stale_params 1 bit_depth 16
[2022-10-03 15:48:14,462] Artemis eiger INFO: after wait 9: stale_params 1 bit_depth 16
[2022-10-03 15:48:14,462] Artemis eiger INFO: Setting to data type UInt16, currently at 16

Potential solution is immediately after setting the detector params monitor stale params and confirm it goes high -> low

Any ideas on a good way to do this @GDYendell?

Are you doing put with callback on the parameters? That should block until stale is set high.

Not currently, will there be any timing differences between:

Put and wait for callback for each parameter
Put to all params, gathering all the callback as we go then wait for all callbacks at the end

Do you have a preference? I think 2 is cleaner

Either should be fine.

authors: DominicOram GDYendell

repo: DiamondLightSource/python-artemis


text:
⚠ Halloluise has degraded performance

In cab5be8, Halloluise (https://halloluise.de) experienced degraded performance:

HTTP code: 200
Response time: 3334 ms

Resolved: Halloluise performance has improved in b841ea8.

repo: DianaHaidarbaigi/LuisenGym


text:
Command Migrations, Async Server removal

What's included in this PR:

Integration tests removal/move from async to resp (This makes it ready to remove async server)
Command seggregation at /eval/commands.go file fo better readability
Command migration: HELLO, SLEEP, FLUSHDB, COMMAND
Document removal for BIGWRITEAOF, SELECT
Removed QWatch and QUnwatch (commands, tests)

Removed AsyncServer
Multithreading is enabled by default, you cannot stop it, you need to use numshards = 1 if you want a single shared system

I have removed support for bitop @apoorvyadav1111

repo: DiceDB/dice


text:
[#835] docs: updated LPUSH documentation

Updates documentation for LPUSH command as per #835

Thanks for the contribution @Aditya-Chowdhary. Thanks for the reviews @apoorvyadav1111. LGTM.

authors: Aditya-Chowdhary JyotinderSingh


text:
Version 3.0.0 release tracker

The 3.0.0 release is here! New major changes are here, the deps have been highly updated, and more further plans will come.

See resume of the changes
Community stuff

Notify if the Windows executable build is skipped (aaec68e4c16e1a272be386147da993bb1a1fbdc6, a1d2ca898f346c4731093711ada289528dcf70e0)
Update the guide (a8fa0b4c2343bea0571d48ce414a9593492682cd, 06bd147415a3a8cd44d6f06941d4c3a3999eca0b)

New behavior, or gaming-related stuff

The title menu! A new "welcome interface" for starting the game! (#60, #64)
Background stars! The background is now more colorful with a lot of stars (#73)

Dependencies

Updated dependencies:

Pyxel: 1.7.1 -> 1.8.22 (#54, #61, #63, #65, #66, #67, #68, #69, #70, #71, #72, #78, #80, #81, #82)
Black: 22.3.0 -> 22.10.0 (#50, #62, #74)
flake8: 4.0.1 -> 5.0.4 (#55, #57, #58)
setup-python (CI): 3 -> 4.3.0 (#49, #53, #56, #75)

Coming soon...

Since Pyxel now supports web support, we're planning to add an in-browser option to play!

I'll follow the same process I've used in previous releases, just give me some time :)

https://github.com/DiddiLeija/diddi-and-the-bugs/releases/tag/3.0.0

I'm currently working on the itch.io thing :P

Done! https://diddileija.itch.io/diddi-and-the-bugs/devlog/445179/version-300
Closing for now, since we finished the release process :)

repo: DiddiLeija/diddi-and-the-bugs


text:
3rd party drivers don't update

I've heard reports that 3rd party drivers don't update (--ext-co isn't fetching updated packages?), but so far I've been unable to replicate, as ebuild.sh seems to actually just nuke any 3rd party package directories, then just clones them again.

Can't replicate and the ebuild.sh seems solid enough.

repo: Dids/clobber


text:
🛑 Email Service - Datascan is down

In 622b9d7, Email Service - Datascan (https://marge.datascan-site.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Email Service - Datascan is back up in d5445e1 after 20 minutes.


text:
Abstract complex logic into a new Model

This should allow all important operations to be called internally from Python, as well as via the HTTP API.

@manthey Can you take a look at this? I'm having trouble setting up the tests locally, so I'm not sure exactly why they're failing.

@manthey PTAL.

@brianhelba I changed what exceptions are thrown, since we don't want Rest exceptions in the general model.  I'll merge this in; if you want changes, we'll do it as another PR.

This is perfect, thanks @manthey.

authors: brianhelba manthey


text:
🛑 ZL1OTD Repeater is down

In e8ab060, ZL1OTD Repeater (https://zl1otd.dvnz.nz) was down:

HTTP code: 502
Response time: 19448 ms

Resolved: ZL1OTD Repeater is back up in e57e2b8.

repo: DigitalVoiceNZ/upptime


text:
🛑 API - Debank Gas Price Dict is down

In fa50fad, API - Debank Gas Price Dict ($DEBANK_GAS_PRICE_DICT_API_URL) was down:

HTTP code: 429
Response time: 597 ms

Resolved: API - Debank Gas Price Dict is back up in 88a7a58.

repo: DimensionDev/status


text:
🛑 API - Debank Gas Price Dict is down

In 431e1ae, API - Debank Gas Price Dict ($DEBANK_GAS_PRICE_DICT_API_URL) was down:

HTTP code: 429
Response time: 254 ms

Resolved: API - Debank Gas Price Dict is back up in c031bfd.