CHEF-3511: call chkconfig --add instead of on

The correct way to enable a service on RHEL for chkconfig management
is to pass chkconfig the --add option; passing it on instead will
result in it ignoring the service's init script's chkconfig lines or
LSB stanza, enabling it for default runlevels and skipping kill
entry creation.

So a yearish later, I think I'm less interested in painting the bikeshed about adding an :add action on the service resource.  I think I'm fine with the general approach of having :enable also do add, and then if that really causes issues we can revisit later.  But this PR has problems in that I believe if we're already disabled and try to enable that we'll run only --add which I don't think will enable and we still need to issue the chkconfig on (or someone needs to prove that we don't), and we need unit testing around this.

Sorry about the long delay in getting back to this. I'm now covered under my company's CCLA.
Let me try and summarise the issue:
Running chkconfig --add SERVICE will enable SERVICE as per the configuration options specified in its init.d/ script. Said configuration can consist of either chkconfig-specific lines, or an LSB stanza, which, if present, is preferred over the former.
Both the chkconfig-specific lines and the LSB stanza can configure a service not to be automatically started in any runlevels: by using a dash ('-') instead of a list of runlevels (works for both configuration methods), or by not providing the Default-Start keyword with a list of runlevels (LSB stanza only). In such cases, chkconfig --add SERVICE will enable SERVICE for management by chkconfig, but it will not create start links for it in the /etc/rc[0-6].d/ hierarchy. It will, in other words, do exactly what the configuration told it to.
Running chkconfig SERVICE on, which is what Chef does at present (in the enable_service() function: https://github.com/chef/chef/blob/master/lib/chef/provider/service/redhat.rb#L74) , will create start links for runlevels 2-5 inclusive- it will not look at the configuration. Adding the --level RUNLEVELS option to chkconfig SERVICE on would restrict chkconfig operation to the RUNLEVELS specified.
While replacing on with --add in enable_service() would make Chef conform to the service's configuration as specified in its service script file, it would also result in breaking the :enable action (whose remit is to "enable a service at boot", as per the Chef doc: http://docs.chef.io/resources.html#id271) in those cases where the script's configuration specifies it should not be started automatically at all (or in the runlevel(s) you're interested in).
Therefore, the best course of action would seem to be to add another, RHEL-based specific action to the service resource: :add, which would do what it says on the tin for RHEL-based systems.
That leaves open the question of what to do when a user passes the service resource both the :add and :enable actions. In cases where the script's config specifies it should be started in some runlevels, :add should take precedence per the principle of least surprise, but if the script's config specifies it should not be automatically started, then what do we do?

So, what makes sense in my head is:

add:  runs chkconfig add service
enable: runs chkconfig service on  by default
enable (with an additional levels parameter): runs chkconfig --level <parameter> service on
disable: runs chkconfig --levels 0123456 service off by default

That ways enable won't always override the levels unless you tell it to so that add and enable should play well together.  Leaving disable as forcing all the levels by default since if I want something disabled I want to assert that its gone everywhere.
That is my 'this is how it should have been written to start with' proposal.

Thanks @lamont-granquist. This sounds good to me, except for when we need to run both --add, and on without --level LEVELS, because the user has passed the service resource both :enable and :add, but without specifying any levels. In such a case, on will override --add.
For example, with a service foo that has the following chkconfig spec:
# chkconfig: 35 20 80
Here's what we get:
[root@chef-test init.d]# chkconfig --add foo && chkconfig --list foo
foo             0:off   1:off   2:off   3:on    4:off   5:on    6:off
[root@chef-test init.d]# chkconfig foo on && chkconfig --list foo
foo             0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@chef-test init.d]# chkconfig --add foo && chkconfig --list foo
foo             0:off   1:off   2:on    3:on    4:on    5:on    6:off

Am I missing something?

WAT??? That seems like a bug in RHEL, why does it do that???
http://i289.photobucket.com/albums/ll224/SmokeJumperFirearms/SMILEYS/BANGHEADDESK.gif

So it sounds like :enable should map to chkconfig reset then...
TIL I was doing it wrong for over a decade...

Although this issue seems to suggest reset is also the wrong behavior and the chkconfig line is only to be used for vital system services that should be started on startup and enabled by default when they're installed:
https://projects.puppetlabs.com/issues/15797

So, I think back to my original proposal to add an :add action and then allow for manually tweaking the levels on a case-by-case basis...

OK, so if I got you right:

When a user passes :enable and :add to the service resource, without specifying any levels, we run chkconfig SERVICE on. There doesn't appear to be a satisfactory way to reconcile :add with :enable in that case, because of the (quite common, it turns out) case when a service's init script file specifies that it should never be started automatically. Maybe we should log a message warning the user about possibly inconsistent results? Effectively, this means :enable trumps :add when the user doesn't specify any levels.

:add alone: we run chkconfig --add SERVICE

:enable alone: we run chkconfig SERVICE on

:enable with levels specified, with or without :add: we run chkconfig --level LEVELS SERVICE on. This is perfectly compatible with --add, so running both, in whatever order, is not an issue in this case. If the service was configured not to start automatically in any runlevels in its init script, it will be configured to start automatically at runlevels LEVELS after chkconfig --level LEVELS SERVICE on is run. Conversely, if its init script specified it should be started automatically in some runlevels, those won't be affected by chkconfig --level LEVELS SERVICE on.

:disable: we run chkconfig --levels 0123456 SERVICE off

Does that look OK?

Well you can't conditionally take actions based on other actions that are present.  So for your first bullet point [ :add, :enable ] will be service add plus service on.  There's no good way to fix that.  If that needs fixing then the user needs to specify explicit levels.
The rest of your bullet points are exactly what I'm talking about.

@lamont-granquist: gotcha, thanks. I'll get cracking.

closes #2168

There's another PR for adding --levels, I think I'm going to add the :add action to that as well.

Hi @lamont-granquist do you have a link to that other PR?    Per #3709 the disable_service method needs to be touched as well.

Offhand I can't recall.  Half of this got done with a PR that I merged, half of it is not done and is on issues that are assigned to me.  The multiple PRs and issues on this are a mess and I can't keep them straight.

still should really be fixed, but haven't had the time.

I think I'm going to close this as not the responsibility of the service provider.
The title as stated is incorrect, "--add" is what you must call to add a new initscript, "enable" is what you need to call to enable it.  If enable doesn't enable the right runlevels then the service provider should be passed the levels property that was added in #3793.
The normal way that chkconfig --add is called is via the post install script in an RPM.  If the user is dropping a cookbook_file or template in then they should construct code like:
template '/etc/init.d/foo' do
  source 'foo-init.erb'
  notifies :run, 'execute[chkconfig-add-foo]', :immediately
end

execute 'chkconfig-add-foo' do
  command '/sbin/chkconfig --add foo'
  action :nothing
end

And if a package install doesn't correctly --add the init script then a notification can be hung off of the package resource instead of a template.
Having the enable action override the LSB settings in the init script duplicates the command line, and is the responsibility of the system admin to correctly use the --levels argument if they want to replicate the settings in the initscript.  I don't know why RedHat behaves this way, but this is the same as the command line.  The alternative of only using --add is just going to get into warfare between users who expect one behavior and uses who expect the other kind of behavior.  If you feel the behavior is incorrect for a service, then you're really fighting with chkconfig's own API and again you can manually roll your own chkconfig --add command and use the levels option to :enable or skip using :enable entirely.
Adding an :add action to the service resource doesn't create a useful abstraction since the caller is still going to be responsible for writing e.g. platform-specific code to avoid calling :add on platforms other than redhat.


Fix missing comma in default config

Trust me, it's daunting having to deal with the missing comma every time I want to use decorators in a new project.

Fixes #

You're editing the test, not the implementation. The code is in commandLineOptions.ts

Technically the comma isn't missing, since it's the last commented option in the file; but then again, since we're writing comments, it's probably safe to assume that the json parser (ie, us) reading the file is relaxed enough to support trailing commas. 😄

Technically the comma isn't missing, since it's the last commented option in the file; but then again, since we're writing comments, it's probably safe to assume that the json parser (ie, us) reading the file is relaxed enough to support trailing commas. smile

Take a look at which comma I added please.

I said commented but meant to say uncommented. Heh.

I don't think it's enough to settle with the expectancy of the user depending on their IDE. I use vscode.

Are you guys planning on fixing this?


Add kubernetes-plugins ci initial test

Adds an initial CI test folder with a single test to check if the kubernetes filter plugin is enhancing records with k8s pod labels.
We can add kubernetes_namespace label checks after https://github.com/fluent/fluent-bit/pull/8279 has merged.
NOTE: Since the fluentbit container does not have tar available, I wasn't able to just use a file output with a kubectl cp and instead just use another output plugin (elasticsearch) to be able to fetch and check the results easily. (Obviously this will look very similar to the elasticsearch-basic ci/bats test).

NOTE: Since the fluentbit container does not have tar available, I wasn't able to just use a file output with a kubectl cp and instead just use another output plugin (elasticsearch) to be able to fetch and check the results easily. (Obviously this will look very similar to the elasticsearch-basic ci/bats test).

Yeah I think that's fair enough, I was thinking it potentially could be done with stdout and then checking the output of the pods or another output like Loki, etc. (we could also use a PV for file access) but this is fine and works.
Just need to check why it did not run the integration tests in this case. We may need to run them for the specific branch but I was hoping it would trigger on PR to confirm the test actually passes before we merge.

@patrick-stephens I like your idea of using stdout plugin much better than my original version. I just pushed a new update and removed the elasticsearch output dependency.
This version works by creating fluentbit that will read container logs that are in the $TEST_NAMESPACE. Since I'm running fluentbit as a deployment, any test container I create needs to be on the same k8s node for fluentbit to see it's logs. I use the fluent-bit container's nodeName after it's deployment to specify that as a nodeSelector when I run a hello world app (just a base alpine image that prints hello world every 2 seconds). That hello world app is being assigned a custom label this_is_a_test_label=true and after all that is deployed and running, I look for it specifically.
Let me know your thoughts!

@patrick-stephens - ok i just pushed the latest version.
bats-detik version was updated, it looked like some of the other libs had higher versions but i only updated the one i needed to fix that try bug. I believe I addressed your other comments or responded to them, please take another look, hopefully it's looking much cleaner now.

@ryanohnemus does this pass locally for you btw?

@patrick-stephens
./run-tests.sh tests/kubernetes-plugins/basic.bats
+++ dirname /Users/ryan/repos/fluent-bit-ci/tools/install-bats.sh
++ cd /Users/ryan/repos/fluent-bit-ci/tools
++ pwd
+ SCRIPT_DIR=/Users/ryan/repos/fluent-bit-ci/tools
+ BATS_ROOT=/Users/ryan/repos/fluent-bit-ci/tools/bats
+ BATS_FILE_ROOT=/Users/ryan/repos/fluent-bit-ci/tools/bats/lib/bats-file
+ BATS_SUPPORT_ROOT=/Users/ryan/repos/fluent-bit-ci/tools/bats/lib/bats-support
+ BATS_ASSERT_ROOT=/Users/ryan/repos/fluent-bit-ci/tools/bats/lib/bats-assert
+ BATS_DETIK_ROOT=/Users/ryan/repos/fluent-bit-ci/tools/bats/lib/bats-detik
+ rm -rf /Users/ryan/repos/fluent-bit-ci/tools/bats
+ mkdir -p /Users/ryan/repos/fluent-bit-ci/tools/bats/lib
+ BATS_ASSERT_VERSION=2.0.0
+ BATS_SUPPORT_VERSION=0.3.0
+ BATS_FILE_VERSION=0.3.0
+ BATS_DETIK_VERSION=1.2.1
++ mktemp -d
+ DOWNLOAD_TEMP_DIR=/var/folders/m3/_vmlrw313xddy2ynj_g9b7680000gn/T/tmp.A5D8LenhmR
+ pushd /var/folders/m3/_vmlrw313xddy2ynj_g9b7680000gn/T/tmp.A5D8LenhmR
/var/folders/m3/_vmlrw313xddy2ynj_g9b7680000gn/T/tmp.A5D8LenhmR ~/repos/fluent-bit-ci
+ curl -LO https://github.com/bats-core/bats-assert/archive/refs/tags/v2.0.0.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 21631    0 21631    0     0  42141      0 --:--:-- --:--:-- --:--:-- 42141
+ unzip -q v2.0.0.zip
+ mv -f /var/folders/m3/_vmlrw313xddy2ynj_g9b7680000gn/T/tmp.A5D8LenhmR/bats-assert-2.0.0 /Users/ryan/repos/fluent-bit-ci/tools/bats/lib/bats-assert
+ rm -f v2.0.0.zip
+ curl -LO https://github.com/bats-core/bats-support/archive/refs/tags/v0.3.0.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 18035  100 18035    0     0  27533      0 --:--:-- --:--:-- --:--:-- 27533
+ unzip -q v0.3.0.zip
+ mv -f /var/folders/m3/_vmlrw313xddy2ynj_g9b7680000gn/T/tmp.A5D8LenhmR/bats-support-0.3.0 /Users/ryan/repos/fluent-bit-ci/tools/bats/lib/bats-support
+ rm -f v0.3.0.zip
+ curl -LO https://github.com/bats-core/bats-file/archive/refs/tags/v0.3.0.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 47242    0 47242    0     0  73563      0 --:--:-- --:--:-- --:--:--  474k
+ unzip -q v0.3.0.zip
+ mv -f /var/folders/m3/_vmlrw313xddy2ynj_g9b7680000gn/T/tmp.A5D8LenhmR/bats-file-0.3.0 /Users/ryan/repos/fluent-bit-ci/tools/bats/lib/bats-file
+ rm -f v0.3.0.zip
+ curl -LO https://github.com/bats-core/bats-detik/archive/refs/tags/v1.2.1.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  154k    0  154k    0     0   304k      0 --:--:-- --:--:-- --:--:--  304k
+ unzip -q v1.2.1.zip
+ mv -f /var/folders/m3/_vmlrw313xddy2ynj_g9b7680000gn/T/tmp.A5D8LenhmR/bats-detik-1.2.1/lib /Users/ryan/repos/fluent-bit-ci/tools/bats/lib/bats-detik
+ rm -f v1.2.1.zip
+ popd
~/repos/fluent-bit-ci
+ rm -rf /var/folders/m3/_vmlrw313xddy2ynj_g9b7680000gn/T/tmp.A5D8LenhmR

========================
Starting tests.
========================

Fluentbit repository: ghcr.io/fluent/fluent-bit - tag: latest

1..1
ok 1 test fluent-bit reads k8s labels in 118000ms

========================
All tests passed!
========================

Can you rebase and push a new commit to your original PR so it can trigger the new tests?

@patrick-stephens - ok i created a new draft pr https://github.com/fluent/fluent-bit-ci/pull/122 over here, but i still don't see it automatically kicking off a run?

Sorry I meant to your Fluent Bit PR - the namespace label support there.


XPath element not found; Chrome extension only records as a hidden title

I'm currently writing a script to automate data insertion in a company website. I am trying to type into a input field but TagUI can not find it. The element I am trying to find is
<input type = "text" class="textfield autosuggesttextfield" autocomplete="off" tit;e="3rd Item Number" maxlength="28" tabindex="2" name="qbe0_1.0" style="width: 156px; padding-bottom: 1px; cursor: auto;" prevwidth="156">
I tried using the TagUI chrome extension but for every action it says "click menutitle_hidden"
Is this an issue with the site I am using? I can login and navigate to the specific page in TagUI just fine but it can not find any element on the page.

This is the element, it did not show up in the original post:

Hi @Cathy21, yes it is likely due to the website you are automating on. The Chrome recorder is not fool-proof because of many variations in web design standards. You can try using the name attribute by type qbe0_1.0 as dummy text for field or try using below to find the XPath and use that -
https://github.com/kelaberetiv/TagUI#find-xpath-of-web-element

Thank you for the quick response! I checked the path and it was inside an iframe so I used frame{} - I can now type into the input box but I am unable to click on the checkbox. This is the checkbox - only the highlighted area corresponds to the checkbox element - anything else below is associated to other elements in the same row.

This is after I click the checkbox normally.

I am using the XPath to locate the checkbox and the name does not change.
frame e1menuAppIframe
{
type qbe0_1.0 as '+$itemno+'[enter]
click //*[@id="G0_1_R0"]/td[1]/div/input[@name="grs0_1"]
}

Hi Cathy, normally below code will work for this situation, since name is usually unique identifier -
frame e1menuAppIframe
{
type qbe0_1.0 as '+$itemno+'[enter]
click //*[@name="grs0_1"]
}

If above does not work, it could be a non-standard design in checkbox. Try the following -

consider using dom step to use JavaScript and control the clicking or setting it to the way that it is clicked (if you are able to do that in the Chrome inspector console)

consider using visual automation to actually simulate the computer mouse clicking on it (see homepage for more details on how to use that and the pre-requisite Java)

If above cannot work, you can try sharing your replication code here so that I can take a look.

I tried using the code that you provided but it did not work.
Here is what I tried for your suggestions:

dom document.getElementsByClassName("grs0_1").click();
dom document.getElementsByClassName("grs0_1").checked = true

I don't believe there is a way to set it so that it is clicked. The only indication that the checkbox is marked are the changes that appear in the photo from my latest reply. The two lines of code I tried did not work (tried separately).

Visual Automation with a .png image of the checkbox does not work properly - the mouse moves to a different region of the page and not the checkbox (there is no error it just moves to a random spot on the webpage and indicates a success in the tagui_windows log). There are also multiple checkboxes located on the page. In addition the checkbox corresponds to a specific row of a table so I would need to check the row information before knowing which checkbox to select.
-Visual Automation with coordinates seems to be the only option that is working - however, this is not an ideal solution for my program because it will be used on multiple laptops with different sized screens and I would therefore need to adjust the coordinates for each laptop individually.

tl:dr - Only Visual Automation with coordinates works but is not ideal for the process I am automating.
I can send the script and screenshots of the chrome inspector console for the page I am automating but unfortunately it is a company page that can only be accessed with specific credentials and on the company server. (I will email the script and screenshots)
Once again, thank you so much for the quick response and help! As a first time user of TagUI and automation tools in general, it has been very helpful.

Hi @Cathy21 got it, I received the details in your email. It looks like after clicking, the only change is the class of the checkbox has an additional selectedModifier. Considering all the inputs so far, the next suggestion would also rely on the visual automation engine.

first try setting your Windows laptop display resolution to recommended or 100%. One of them would make the visual automation capability work. The behaviour you mentioned above clicking at the wrong spot happens when the engine interpreted the screen resolution wrongly.

After that, hopefully for clicking the checkbox you described above, is it possible to be done completely using the keyboard? Eg ctrl+f to search for the correct row and tab backward and space to click? If yes, you can use the keyboard step to replicate the complex keystrokes to make that selection. Eg keyboard [ctrl]f, keyboard `string` etc etc. For the syntax see here - https://github.com/kelaberetiv/TagUI/issues/370

When I tried the visual automation in my previous response, I tried it on both the recommended resolution and 100% but it was still clicking at the wrong spot- I currently have an external monitor attached that is extended from my laptop but I took the screenshot on the laptop screen which is where the automation runs.
It seems like the program is having a lot of difficulty finding many of the elements in the frame in general. For now, I am using keystrokes to navigate through the frame I am working in and that works pretty well.
I tried the Ctrl f option and that works pretty well on a checkbox on another page I am automating and therefore no longer need the mouse coordinates! Unfortunately the page with the checkbox I was originally specifying has a weird tabbing order and would require me to tab through almost half the elements on the page before I get to the checkbox. However the easy workaround for this specific site was just to customize the columns that appear so that I could tab directly from the search bar.
Overall, the general solution was using vision type(Key.TAB) to navigate and vision type(Key.SPACE) to click and customizing components of the website to reduce the time it takes to tab to the correct element.
Thanks for the help! While this may not be an ideal solution for everyone, it works well enough on the website I am using to get the job done!

Great, thanks for sharing the update!
You can try below to see if that speeds up, by bundling keystrokes in 1 command -
keyboard [tab][tab][tab][tab][tab][tab][tab][tab][tab]

Is there a difference between keyboard and vision type? Is there one that is preferred over the other?

Yes, vision is a workaround in the past to send custom commands to SikuliX, the computer vision and OCR engine used by TagUI. But since TagUI v5, keyboard step is introduced and that is the preferred (easier and more readable) way to send complex keystrokes. Both ways work.
TagUI v4
vision type(Key.TAB)
vision type(Key.TAB, Key.ALT)

TagUI v5
keyboard [tab]
keyboard [alt][tab]

Using keyboard and bundling keystrokes was much faster! Thank you for all the help :)

Hi @kensoh
I just had a question regarding my initial question for typing into the input box. My script iterates through an array and inputs the item number into that input box using type qbe0_1.0 as dummy text for field. It seems like the script will type correctly for the first iteration but once it goes to the second iteration, it no longer types into that same input box. Does this have something to do with it being in the frame? Should put my for loop inside or outside the frame{} section?
My current structure is:
frame frame_name
{
for (n=0;n<some_length;n++)
{
type qbe0_1.0 as `array[n]`
...
}
}

I haven't come across this issue of loops in frame. Your structure looks correct.
First check if the qbe0_1.0 identifier change with each iteration?
If the identifier does not change, try the following to see if it helps -
for (n=0;n<some_length;n++)
{
frame frame_name
{
type qbe0_1.0 as `array[n]`
...
}
}

Closing issue for now until further inputs!


feat(protocol): Open multi-proof for Proposer & Prover

Describe the feature request
Description of the feature request here.
From discussions with @Brechtpd and Vitalik's enshrined ZK-EVM
Background
Taiko's current proof system relies on a tier oracle that impose a centralized control of proof type. Such implementation corresponds to a "close" multi-client system under Vitalik's definition:

Another option is a closed multi-client system, where there is a fixed set of proof systems that is known within the protocol. For example, we might decide that we use three ZK-EVMs: the PSE ZK-EVM, the Polygon ZK-EVM and Kakarot. A block would need to come with proofs from two of these three to be valid. This is better than a single proof system, but it makes the system less adaptable because users would have to maintain verifiers for each proof system that exists, there would be an inevitably political governance process for incorporating new proof systems, etc.

On the contrary, an "open" multi-client system is also proposed:

This motivates my preference for an open multi-client system, where proofs are placed “outside the block” and verified by clients separately. Individual users would use whatever client they want to verify blocks, and they would be able to do so as long as there is at least one prover creating proofs for that proof systems. Proof systems would gain influence by convincing users to run them, and not by convincing the protocol governance process. However, this approach does have more complexity costs, as we will see.

The obvious difference differences between these two is whether the protocol has some enshrined precompiles for verification. Vitalik also proposes an "in-protocol ZK-EVM feature" for L1, which implies more nuances for the proof supply chain:

verification is based on consensus
proof generation is modular, which separate execution logic and underlying proof system (ZKP/TEE)
all blocks needs to be type-1 in order to standardized the consensus and modular design (true for L1, but not for most L2s)

To illustrate:

Propose Change
We should implement a semi-open multi-client system on the prover to builder side, while keeping the enshrined verification. For the following rationals:

We are type-1.
We have multi-clients already (geth, reth).
We collaborate with Powdr to support various ZKP compiled from multi-clients, plus SGX, plus PSE.
We have opened prover's market.
Can be compatible with current BCR as long as verifiers are pre-deployed and we can assign tiers to proofs type.

We could require the Taiko proposer to specify the proof type at proposal time, more than one types of preferable proofs can be required to get the benefit of multiplexing (the more proofs the better). If the type or amount does not meet the tier requirement, proposeBlock() reverts. Another potential benefit is simplifying proving fee calculation since the proof type is deterministic and uniform; we only need to check the TKO bond.

Further implementation details may need to be considered, but moving in this direction alligns with ZK team's road map with compilation, and will make us the first rollup explicitly practicing the open design of "in-protocol ZK-EVM feature".
Describe alternatives you've considered
Description of the alternatives you've considered here.
Additional context
Additional context here.

We could require the Taiko proposer to specify the proof type at proposal time

Should be left to the prover I think because the proposer only cares about maximizing profits, so the prover with the lowest fee will be selected. So the prover decides what proofs to generate that minimizes his costs and will be accepted by the rollup smart contract.

If the type or amount does not meet the tier requirement, proposeBlock() reverts. Another potential benefit is simplifying proving fee calculation since the proof type is deterministic and uniform; we only need to check the TKO bond.

My opinion is that all blocks should have the same requirements, so no random minimal tier. That solves the deterministic problem and also makes things very easy for the proposer because the proposer does not have to care about proofs at all, the proposer just has to find a prover willing to prove its block. The prover will do so for a fee, and at the risk of losing his bond will generate the required proofs to get its bond back.

We should implement a semi-open multi-client system on the prover to builder side

If we have to do check the validity in a smart contract, following the definition of Vitalik, it would still fall under a closed system I believe. But https://github.com/taikoxyz/taiko-mono/issues/15376 would be a good way to still use it in some way.
The interesting thing is that the open system seems incompatible with validity proofs because they require strict and known rules to function. So that narrows things down how we could use it without this enshrined precompile being available on L1. And when it's available on L1, it will be tricky to prove on L2 because we cannot verify it directly in a validity proof, so we would have to propagate these enshrined EVM proofs done on L2 back to L1 for verification I think.

Should be left to the prover I think because the proposer only cares about maximizing profits, so the prover with the lowest fee will be selected. So the prover decides what proofs to generate that minimizes his costs and will be accepted by the rollup smart contract.

I guess I say it because I think it's a way to circumvent the TierProvider, feel like when we get rid of this centralized thing a mid-way solution is to let proposer choose, while the protocol specify a minimum requirement. But if there's no tier system at all if we just wanna multiplex proof soundness, it's also okay that we just require a bond which will be taken away if the minimum criteria is not met. In this way we don't really care who's making decision of proof type.

My opinion is that all blocks should have the same requirements, so no random minimal tier.
That would be great, so that no backward compatible is needed.

If we have to do check the validity in a smart contract, following the definition of Vitalik, it would still fall under a closed system I believe. But https://github.com/taikoxyz/taiko-mono/issues/15376 would be a good way to still use it in some way.
You're right in strict definition, as long as there is precompiled deploy then the system is closed. However we should certainly leverage Taiko being type1 and our prover market being opened to approach openness in the proof supply chain. Like in #15376, use cryptoecohomy backed verifier or something to decrease the "enshrinement".

And when it's available on L1, it will be tricky to prove on L2 because we cannot verify it directly in a validity proof, so we would have to propagate these enshrined EVM proofs done on L2 back to L1 for verification I think.

This I don't follow 🤔 can you explain?

The enshrined precompile depends on those claim blobs when following the design set out by Vitalik. And the proofs accepted by the protocol for those claim blobs in the open system are without known verifiers, and so not part of the Ethereum spec directly (only indirectly as in those proofs should verify that the spec was correctly implemented, but how that is done is left open and so clients can choose).
So if you want to create a validity proof for this precompile (and so for those claims), you can't really write code that is able to support that really because you don't know what proofs should be accepted. There is no code that can be general enough to support the verification of all possible proofs that can show the correctness of a state transition. You could write code that supports the proof types supported by all major Ethereum clients, but even then you run into the problem that when one of those proofs get updated you would have to update the validity proof as well. So you're back to a closed system.
That's why I say that if somebody would call this precompile on L2, we can't directly create a validity proof for it. The only way to really implement it in an open way is to collect all claims from the L2, repost them to L1 and then let the L1 decide on those claims instead, because that way we avoid having to prove the precompile directly on L2 and instead make use of the open system on L1.

I see ... so literally Zk L2 is a precursor to Zk L1. If Ethereum wants open multi-SNARKed without enshrining anything from let's say PSE, then they'd have to leverage the rollup ecosystem which already has battle-tested ZKP for clients. Naturally the major Zk rollup's validity proof will be picked by the community to installed in their verification client. That's cool!
Yooo i think there's some big alpha here :) Although I now agree with you on L2s validity proofs can only be closed.
But we should def ride the tide and articulate this idea from Vitalik to the public. And say that our system (although it's closed) is the most suitable for testing validity proofs for open client systems.

Hybrid Multi-Client System:
-Combine aspects of both closed and open systems.
-Enshrine a set of core proof systems in the protocol for standardization and efficiency.
-Allow users to propose and adopt new proof systems through a decentralized governance process.
-Users can choose to run standard verifiers or opt for alternative ones.

Dynamic Proof System Registration:
-Allow proof systems to be registered dynamically on the blockchain.
-Provers can register their proof systems, and clients can choose which ones to use.
-Use a decentralized reputation or token-based system to incentivize trust in proof systems.
-Implement strict security standards for registration to prevent malicious actors.

Incentivized Open Multi-Client System:
-Emphasize an entirely open system where any prover can provide proofs.
-Introduce economic incentives for users to run and verify specific proof systems.
-Use a decentralized marketplace for proof systems, where users can choose based on cost, performance, or other criteria.
-Employ a reputation system to assess the reliability of different proof systems.

Layered Verification:
-Introduce a layered approach to verification, where different layers handle specific aspects of proof validation.
-Base layer for core and widely accepted proof systems.
-Additional layers for experimental or niche proof systems, allowing users to choose their level of security and adaptability.

Dynamic Consensus-Driven Proof System Switching:
-Allow the blockchain to dynamically switch between different proof systems based on consensus rules.
-Implement a protocol-level voting mechanism to decide on proof system changes.
-Ensure a transition period to allow users to adapt to the new proof system.

In-Protocol ZK-EVM Feature with Flexible Implementation:
-Implement the proposed in-protocol ZK-EVM feature for Layer 1 with a focus on modular design.
-Allow users to plug in different ZKP or TEE libraries, fostering flexibility.
-Maintain a high-level of abstraction, separating execution logic from underlying proof systems.

Considerations for Alternatives:
1.Security and Standardization: Balance between openness and the need for standardization to ensure security and interoperability.
2.Governance and Decentralization: Address challenges related to governance processes for proof system updates or additions.
3.Usability: Ensure that users can easily adapt to changes and that the system remains user-friendly.
4.Economic Incentives: Design mechanisms to incentivize users to participate in the chosen proof system.
Selecting the most appropriate alternative would depend on the specific goals, use cases, and considerations of the blockchain protocol in question.

Great work good people!!


Edit ism example policy

Description
make the ism example policy more clearly
previous pr : https://github.com/opensearch-project/documentation-website/pull/5821
Issues Resolved
None
Checklist

[x] By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license and subject to the Developers Certificate of Origin.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@andrross sorry i had a mistake so i made a new pr :( ..
I modified it based on the reviews you gave me

https://github.com/opensearch-project/documentation-website/pull/5821#issuecomment-1867904390

We'll need to change the policy details and diagram to match and also include the temperature details you have above. @10000-ki what do you think? Would you be willing to make those changes in this PR? I think @vagimeli can probably help with the diagram changes if needed.

@vagimeli
If you don't mind, I'd appreciate it if you could modify the diagram to fit the above content

@vagimeli If you don't mind, I'd appreciate it if you could modify the diagram to fit the above content

@vagimeli We'll need to make the following changes to ism.png:

Change text "After 1 day" to "After 7 days"
Change text "1. Set number of replicas to 5" to

Set number of replicas to 1
Move index to warm nodes

Can you help with this?

Hi @andrross - I've updated the image. Please let me know if you'd like any additional changes. Thanks! https://github.com/opensearch-project/documentation-website/pull/6020

@hdhalter Thanks for making the updates while I was OOO. I've doc reviewed. It needs a maintainer to approve the PR.


Add authentication arguments to @MavenRepository

Add support for Authentication in the @MavenRepository annotation as described in https://github.com/holgerbrandl/kscript/pull/214
I took the liberty of updating the plugin-version to the next logical version after the one referenced in the main plugin: https://github.com/holgerbrandl/kscript/blob/master/src/main/kotlin/kscript/app/Script.kt#L132

Thanks. Only minor cosmetic I'll change myself is the pass->password. A few extra characters don't harm here and are more descriptive imho

I've released the updated version to jcenter


Changed styling for @

Notes for Reviewers
This PR fixes #154
This PR is just for trial,
I am open to your suggestions
Signed commits

[x] Yes, I signed my commits.

@leecalcote @iArchitSharma What do you think of this?

No, thank you. Also, this needs to be defined in a class.

@Raj100679 It should be done in similar way i did for :
https://github.com/layer5io/docs/pull/186


Add API to query documentation extension URLs

Bug/issue #, if applicable: N/A
Summary
Add DocumentationContext.documentationExtensionURL(for:) API to query
a symbol's documentation extension.
Dependencies
None.
Testing
No user-facing changes.
Checklist

[x] Added tests
[x] Ran the ./bin/test script and it succeeded
[x] Updated documentation if necessary

@swift-ci please test

@swift-ci please test Linux

@swift-ci please test Linux

@swift-ci please test macOS

@swift-ci please test macOS

I find the article specific behavior in fileURL(for:) confusing. I know that that's the existing implementation but I feel that the API got slightly more confusing when there's two different methods to do very similar things for different types of references.
The problem may be that fileURL(for:) is too vague in its naming.
For articles and tutorials there's no ambiguity as to what the reference's file is, but a symbol reference's file could refer to its symbol graph file, the source file where the symbol is defined, or its documentation extension file.
Is there another word that we can use to rename fileURL(for:) to either include or exclude the documentation extension file explicitly?
For example documentationMarkupFileURL(for:) could be considered to describe all 3 or fileURL(forNonSymbol:) could be used to exclude documentation extension files so that the method name sets the right expectations for when a value will be returned.
(Since fileURL(for:) is public API we'd have to deprecate it and add a new method to avoid breaking changes)

These are great points, @d-ronnqvist. I agree that the naming for fileURL(for:) is confusing, especially in the presence of the new API. After trying a few options, I've renamed the API to documentURL(for:). I believe this makes it clear enough that the API returns the URL for document-based content (articles and tutorial files, but not symbol graph files). I think the documentURL(for:) / documentationExtensionURL(for:) pair makes it clear what kind of file URLs are returned. We might need to solidify the terminology that "document" means Markdown file–based content, but I'd prefer addressing that in another PR.

@swift-ci please test

@swift-ci please test


add project filter with tags

But you can see there have TODO at filter update handler(other feature is all done), bcz it have to modify listOfProjects.js object structure, and i think, the last step is update projectList tag array to id or value in tagList.

It is easy to implement, but i want to discuss with you for best solution without broken original design, any idea?

@genexu, I couldn't completely understand this thought process. Could you please elaborate on this?

In my opinion, we don't need to keep another list of tags. it's basically a union of all tags in projects list right?
How about creating it from projects list itself? That way we just have to update at a single place when we add new projects.

It's about database normalization, you can consider tagsList as a data table, spilt tags will more flexible when our project go bigger.
In addition, i use react-select which lib help we to handle filter condition, if we spilt tags to other list, we can more easily control our data.

@genexu, I'm sorry I took so much time to get back to you. Would you like to complete filterlist update so that I can merge this?
I beg to disagree on having taglist as a different. Even thinking from database normalization point of view, tags are just a property of projects and they don't have a relation with any other property of project. Also it would cause integrity problems as one might update project list and not taglist.
For using in react-select, you an just derive it from project list. It's just a set union.

@Roshanjossey I almost thought you are drop this project, i will take this part when i got free time, ASAP.

@Roshanjossey I just create new PR for this feature, plz check https://github.com/Roshanjossey/first-contributions/pull/1723


Add materials to mentoring resources section of onboarding

http://mathbionerd.blogspot.com/2017/07/not-awesomest-7-year-postdoc.html
https://citizenlab.ca/summerinstitute/codeofconduct.html

Nice image from this tweet

https://academic.oup.com/icesjms/article/doi/10.1093/icesjms/fsx161/4100496/Twelve-easy-steps-to-embrace-or-avoid-scientific


[C++] Parquet writes broken file or incorrect data when nullable=False

In such cases, when trying to write a pyarrow table to parquet with provided schema, and the provided schema contains a field with nullable=false, but contains an actual null value , the resulting parquet either

cannot be read or

the columns are somewhat get pushed up, and the whole table becomes inconsistent. The column changes by seemingly dropping the null value, and pushing together the complete dataset based on the provided row_group_size (and starting over from the start when runs out of values). Different row group sizes will lead to different results as well.  This off-by-one problem is persistent in a single row group, the next could be perfectly fine if it contains no null values.

I believe, none of these behaviours are intentional, but they easily overseen by the user as one might think that providing a schema with constraints would lead to at least a warning/ (or better) an exception when writing the file. Using provided validation methods also see no problem with this particular problem.
You can find a snippet below explaining this weird behaviour.
{code:java}
import pyarrow as pa
import pyarrow.parquet as pq
field_name = 'a_string'
schema = pa.schema([
pa.field(name=field_name, type=pa.string(), nullable=False) # not nullable
])

Arrow Columnar Format doesn't care if a non-nullable field holds a null
t_out = pa.table([['0', '1', None, '3', '4']], schema=schema) # OK
t_out.validate(full=True) # OK
t_out.cast(schema, safe=True) # OK

Parquet writing does not raise, but silently kills the null string

because of the REQUIRED-ness of the field in the schema.

Then you either cannot read the parquet back, or the returned data

is invented, depending on the written row_group_size.
pq.write_table(t_out, where='pq_1', row_group_size=1)
pq.read_table('pq_1')

-> OSError: Unexpected end of stream
pq.write_table(t_out, where='pq_2', row_group_size=2)
pq.read_table('pq_2')

-> OSError: Unexpected end of stream

-> or sometimes: pyarrow.lib.ArrowInvalid: Index not in dictionary bounds
pq.write_table(t_out, where='pq_3', row_group_size=3)
print(pq.read_table('pq_3')[field_name])

-> [["0","1","0"],["3","4"]]
pq.write_table(t_out, where='pq_4', row_group_size=4)
print(pq.read_table('pq_4')[field_name])

-> [["0","1","3","0"],["4"]]
pq.write_table(t_out, where='pq_5', row_group_size=5)
print(pq.read_table('pq_5')[field_name])

-> [["0","1","3","4","0"]]{code}

Reporter: Rácz Dániel
Related issues:

[C++] Check nullability when validating fields on batches or struct arrays (is related to)

Note: This issue was originally created as ARROW-15899. Please see the migration documentation for further details.

Closing as duplicate of #41667.


Do not support kotlin

VSCode Version: Code 1.17.1 (1e9d36539b0ae51ac09b9d4673ebea4e447e5353, 2017-10-10T14:24:50.851Z)
OS Version: Windows_NT x64 10.0.16299
Extensions:

Extension
Author (truncated)
Version

Kotlin
mat
1.3.0

Steps to Reproduce:

Reproduces without extensions: Yes/No

Please provide us more information. If the language support is not working like expected, then it is a issue from the kotlin VS Code extension.

@maxibanki @mjbvz Native does not support, installed only to support expansion. Hope to be able to provide support for the original.

Yes, we only provide builtin support for a small set of core languages. Please try using the extension for Kotlin and file any issues or feature requests for Kotlin against that extension


chore(deps): update gentoo/stage3:latest docker digest to 883b9f0

This PR contains the following updates:

Package
Type
Update
Change

gentoo/stage3
final
digest
11c63ff -> 883b9f0

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Edited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠ Warning: custom changes will be lost.


Flannel to calico migration is failing

With version v0.19.0+ flannel install Daemonset kube-flannel-ds in kube-flannel. The migration job is not able to detect flannel daemonset since it is only looking in kube-system namespace.
flannel-migration logs:
$ kubectl logs -f flannel-migration-jgqbz -n kube-flannel 2022-09-21 07:35:51.785 [INFO][1] main.go 103: Loaded configuration from environment config=&config.Config{LogLevel:"info", WorkloadEndpointWorkers:1, ProfileWorkers:1, PolicyWorkers:1, NodeWorkers:1, Kubeconfig:"", DatastoreType:"kubernetes"} W0921 07:35:51.786064       1 client_config.go:617] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work. 2022-09-21 07:35:51.786 [INFO][1] main.go 127: Ensuring Calico datastore is initialized 2022-09-21 07:35:51.796 [INFO][1] main.go 153: Calico datastore is initialized 2022-09-21 07:35:51.796 [INFO][1] main.go 176: Loaded Flannel configuration from environment flannelConfig=&flannelmigration.Config{FlannelNetwork:"", FlannelIpv6Network:"", FlannelDaemonsetName:"kube-flannel-ds", FlannelMTU:0, FlannelIPMasq:true, FlannelSubnetLen:24, FlannelIpv6SubnetLen:64, FlannelAnnotationPrefix:"flannel.alpha.coreos.com", FlannelVNI:1, FlannelPort:8472, CalicoDaemonsetName:"calico-node", CniConfigDir:"/etc/cni/net.d", PodNodeName:"c07-cnf-vm-14", FlannelSubnetEnv:"", DebugWaitBeforeExit:0, DebugWaitBeforeStart:0, DefaultIppoolSize:26, DefaultIppoolSizeV6:122} 2022-09-21 07:35:51.796 [INFO][1] main.go 207: Starting status report routine 2022-09-21 07:35:51.796 [INFO][1] main.go 501: Starting controller ControllerType="FlannelMigration" 2022-09-21 07:35:51.796 [INFO][1] migration_controller.go 155: Starting Migration controller 2022-09-21 07:35:51.799 [INFO][1] migration_controller.go 333: Daemonset kube-flannel-ds not exists, no migration process is needed. 2022-09-21 07:35:51.800 [INFO][1] migration_controller.go 144: No migration needed. Stopping migration controller.
kubectl get po -A output-
`kubectl get po -A

NAMESPACE      NAME                                       READY   STATUS      RESTARTS   AGE
kube-flannel   kube-flannel-ds-9ftd9                      1/1     Running     0          20m
kube-flannel   kube-flannel-ds-c66t9                      1/1     Running     0          20m
kube-flannel   kube-flannel-ds-t99vz                      1/1     Running     0          20m
kube-system    calico-kube-controllers-6799f5f4b4-7snj8   1/1     Running     0          2m45s
kube-system    coredns-6d4b75cb6d-7qvkt                   1/1     Running     0          20m
kube-system    coredns-6d4b75cb6d-kkps2                   1/1     Running     0          20m
kube-system    etcd-c07-cnf-vm-13                         1/1     Running     0          21m
kube-system    flannel-migration-w8bhv                    0/1     Completed   0          2m25s
kube-system    kube-apiserver-c07-cnf-vm-13               1/1     Running     0          21m
kube-system    kube-controller-manager-c07-cnf-vm-13      1/1     Running     0          21m
kube-system    kube-proxy-2zxcz                           1/1     Running     0          20m
kube-system    kube-proxy-z2qp2                           1/1     Running     0          20m
kube-system    kube-proxy-zx2qj                           1/1     Running     0          20m
kube-system    kube-scheduler-c07-cnf-vm-13               1/1     Running     0          21m

`
kubectl get no -A

kubectl get no -A -owide
NAME            STATUS   ROLES           AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
c07-cnf-vm-13   Ready    control-plane   64m   v1.24.4   <IP_ADDRESS>           Ubuntu 20.04.5 LTS   5.4.0-126-generic   containerd://1.5.9
c07-cnf-vm-14   Ready              63m   v1.24.4   <IP_ADDRESS>           Ubuntu 20.04.5 LTS   5.4.0-126-generic   containerd://1.5.9
c07-cnf-vm-15   Ready              63m   v1.24.4   <IP_ADDRESS>           Ubuntu 20.04.5 LTS   5.4.0-126-generic   containerd://1.5.9

Expected Behavior

Flannel to Calcio migration should be successful.

Current Behavior

Flannel to calico migration is failing

Possible Solution

Migration job should not be hardcoded with kube-system namespace for detecting flannel Daemonset kube-flannel-ds.
Steps to Reproduce (for bugs)

Install Flannel (https://raw.githubusercontent.com/flannel-io/flannel/v0.19.2/Documentation/kube-flannel.yml) version v0.19.2
Do migration from Flannel to calico with mentioned steps in Calico official document https://projectcalico.docs.tigera.io/getting-started/kubernetes/flannel/migration-from-flannel

Context

Not able to migrate from flannel to calico.
Your Environment

Orchestrator version (e.g. kubernetes, mesos, rkt): kubernetes version - v1.24.4
Operating System and version: Ubuntu 20.04.5 LTS

@RishabhSharma-00 @coutinhop @caseydavenport
I am also facing the same problem. Is there any immediate workaround for this or should I wait for a fix?

Fix for this is to update the configuration and add a configuration option here: https://github.com/projectcalico/calico/blob/master/kube-controllers/pkg/controllers/flannelmigration/config.go#L34
Right now I don't think there's a workaround - we'll need to make a minor code change. I would be happy to review a PR to do this.

Is there any progress made on this? Looking at the config.go, there appears to be no way to set the namespace to look in for the flannel daemonset.  We were just about to kick this migrator off, but doing some research, we identified this as a blocker since we are using flannel v0.20.1
It would appear the minor code change required would be to move the hard coded flannel namespace into the config map, maintaining the current hard coded value as default.   My concern is that there may be other changes on the flannel side that need to be qualified through this migration process.  Based on the current issue, it would appear this migration was never tested on a flannel install beyond 0.19

I have a prelim diff for what I think this needs to succeed.  I am working through local build issues (make image is failing on MacOS Monterey 12.6). https://github.com/projectcalico/calico/compare/master...nisc-acooper:calico:feature/flannel-namespace-override?expand=1

PR https://github.com/projectcalico/calico/pull/7557


Update review

Hello, please check this updates. If you like it i will prepare pull-request.
Some tests added.
https://github.com/cnsa/activerecord-postgres-json

Yeah, looks good!


scan is not working

for example, from the examples:
var cursor = '0';

function scan() {
    redis.scan(
        cursor,
             "MATCH", "GAMES:*",
        "COUNT", "10",
        function(err, res) {
            if (err) throw err;

            // Update the cursor position for the next scan
            cursor = res[0];

            // From <http://redis.io/commands/scan>:
            // "An iteration starts when the cursor is set to 0,
            // and terminates when the cursor returned by the server is 0."
            if (cursor === '0') {
                return console.log('Iteration complete');
            } else {
                // Remember: more or less than COUNT or no keys may be returned
                // See http://redis.io/commands/scan#the-count-option
                // Also, SCAN may return the same key multiple times
                // See http://redis.io/commands/scan#scan-guarantees

                if (res[1].length > 0) {
                    console.log('Array of matching keys', res[1]);
                }

                return scan();
            }
        }
    );
}

scan();

it returns just 'iteration complete'
But if I use:

redis.hgetall('GAMES:1', function(err, obj){
		console.log(obj);
});

It will successfully show my object, like so:

Any idea?

I'm trying to grab all the hashes matching GAMES:

@McFarts Seems to work for me:
client.scan(0, 'match', 'games:*', 'count', 10, console.log)
null [ '0', [ 'games:1', 'games:2', 'games:3' ] ]

Looks like what's most likely happening here is you have <= 10 GAMES:* keys and they are all coming back in the first iteration, so cursor = 0 in the reply.
FYI A while ago i wrote a SCAN helper wrapper library for this client that makes things easier:
https://www.npmjs.com/package/redis-scanstreams
var redis = require("redis")
var scanner = require("./scan_streams")(redis)
var scanclient = scanner.createClient()

var terminus = require("terminus")

var tail = terminus.tail({objectMode: true}, function (record) {
  console.log(record)
})

scanclient.scan({pattern: "games:*", count: 10})
  .pipe(tail)

$ node test.js
games:1
games:3
games:2


[#157510099] Upgrade govuk-frontend to v0.0.30-alpha

What
We want to use some of the new components in the govuk design system module, so we upgrade to v0.0.30-alpha ... there were quite a few breaking changes mainly around altered class names and paths.
How to review
Code review, run locally and check that things are looking ok.
Quick start
checkout this branch and run:
npm install

run against rafalp environment if you want...
#!/bin/bash
OAUTH_CLIENT_ID="rafal-login" \
OAUTH_CLIENT_SECRET="secret" \
SERVER_ROOT_URL="http://localhost:3000" \
API_URL="https://api.rafalp.dev.cloudpipeline.digital/" \
BILLING_URL="https://billing.rafalp.dev.cloudpipeline.digital/" \
ACCOUNTS_URL="https://accounts.rafalp.dev.cloudpipeline.digital/" \
ACCOUNTS_SECRET="pe015a478d26f5f95cd" \
NOTIFY_API_KEY="qwerty123456" \
NOTIFY_WELCOME_TEMPLATE_ID="qwerty123456" \
SESSION_SECRET="test_session" \
  npm start

Who can review
Not @chrisfarms or @carolinegreen

Yeah we had a scoot around the site and didn't spot anything wonky  ... haven't checked since rebasing on master tho and another pair of eyes would be good since it changed alot of classnames


Best Practices Page Missing + Different Broken Links

Bug Report
Describe the Bug
The following page is shown in the menu ("Best Practices") but leads to a "Page not found" error:
https://eclipse-edc.github.io/docs/#/submodule/Connector/docs/developer/best-practices
Expected Behavior
A best practices page is shown.
Observed Behavior
A 404 error is shown.
Steps to Reproduce
Steps to reproduce the behavior:

Visit https://eclipse-edc.github.io/docs/#/submodule/Connector/docs/developer/best-practices
See error

Context Information
Add any other context about the problem here.

Usage of published version at https://eclipse-edc.github.io/

Detailed Description
./.
Possible Implementation
./.

Different links are also broken in the documentation. Some examples:
At https://eclipse-edc.github.io/docs/#/submodule/Connector/docs/developer/decision-records/ all links to the 404 records are broken.

thanks for reporting, yes, a lot of links definitely need some love

Different links are also broken in the documentation. Some examples:

At https://eclipse-edc.github.io/docs/#/submodule/Connector/docs/developer/decision-records/ all links to the 404 records are broken

not all of them, only the ones that miss the trailing slash, this is a docsify issue, but I'm not sure it will be ever solved:
https://github.com/docsifyjs/docsify/issues/1018

Data Dashboard Documentation is broken: https://eclipse-edc.github.io/docs/#/submodule/DataDashboard/docs/developer/
Descision Records are broken: https://eclipse-edc.github.io/docs/#/submodule/DataDashboard/docs/developer/decision-records/
Federated Catalog Documentation broken: https://eclipse-edc.github.io/docs/#/submodule/FederatedCatalog/docs/developer/
Identity Hub Documentation Broken: https://eclipse-edc.github.io/docs/#/submodule/IdentityHub/docs/developer/
Registration Service Documentation Broken: https://eclipse-edc.github.io/docs/#/submodule/RegistrationService/docs/developer/
Trust Framework Adoption Documentation Broken: https://eclipse-edc.github.io/docs/#/submodule/TrustFrameworkAdoption/docs/developer/
...

these 404 are given by the fact that these projects don't contain either docs/developer/README.md file or docs/developer/decision-records/README.md

This Issue needs to be reopened since the problem is still present because most of the links mentioned here still don't work.

This Issue needs to be reopened since the problem is still present because most of the links mentioned here still don't work.

these are issues to be addressed in the related repos, nothing can be done here.
one was already solved in the connector one: https://github.com/eclipse-edc/Connector/pull/4257


Add user role conditions to navigation menu items

Merge after https://github.com/RedHatInsights/approval-ui/pull/662
Add user role conditions to navigation menu items:
Catalog and approval admin:

Approval Admin:

@eclarizio  - good to go now


Support for clearing Script Cache

Thanks for the contrib - I'm using this as a replacement as the prior use of the vanilla lib for the nice support of caching scripts etc.
I see that the project uses LruCache instead of System.Runtime.Caching, but the later got support for HostFileChangeMonitor/FileChangeMonitor - which could be nice to auto dispose the cached entry on the basis of the script(s) files changes. But since file change monitor is currently not an option - I'd like to suggest a method for clearing the cache manually; Would be much appreciated :) (its currently internal/private)..
E.g. (a thread safe) cal: ClearScript.Manager.ManagerScope().ClearCache()

OK, will take a look when I get a few...feel free to add it and do a pull request! :)


ScrollToRange problem

I have a grid in which 2 top rows are frozen. If I click in the frozen area, and then I press the button that calls the Worksheet.ScrollToRange method to the area, which is located at the bottom and which is not visible, then it stands out, but the scrolline does not go to the cell.

This problem may has been resolved in the latest version (by #399). Please have a check and let me know if there still is.
And an animation GIF or video will be greatly helpful to reproduce it.

Hi Jing,
I'm using v3.0.0 in WinForms, and I'm experiencing this problem.
The top 2 rows of my grid are headers, and are frozen.
I have a sequence of calls setting SelectionRange to the required row, and FocusPos to the first cell in the row.
I then call ScrollToRange to ensure the required row is visible.
If I have previously clicked outside the frozen rows, then all works correctly.
But if I click in one of the top 2 rows (which are frozen), then the grid scrolls to the top.
The calls to set SelectionRange and FocusPos are working correctly, but the call to ScrollToRange does not work.
If I scroll with the mouse, then I find that the required row is correctly selected and the first cell focused.
If i click outside the frozen rows, then all works correctly again.
Thanks for your help
Kevin


error: unable to recognize "deployments/hello.yaml": no matches for kind "Deployment" in version "extensions/v1beta1"

I got this error when doing the "Creating Deployments" section of https://google.qwiklabs.com/focuses/1747?parent=catalog
It looks like this is an issue with the API version in the deployment yaml files. Doing this:
kubectl convert -f deployments/hello.yaml --output-version apps/v1 > deployments/new-hello.yaml
for each of the deployment yamls before the kubectl create -f fixed the issue for me.

#13 fixed it


iis

Expected behavior
Actual behavior
Information about the Issue
Steps to reproduce the behavior

...
...

how to create container iis in ubuntu???


How to set name of downloaded file?

This command downloads a file called rain-v1.2.0_linux-amd64.zip:
lastversion \
--filter linux-amd64.zip \
--assets \
download https://github.com/aws-cloudformation/rain

I want to call the downloaded copy rain.zip (no version at the end) so that it's easier to process in a script.
The --download option is supported to download with a custom filename.
lastversion \
--filter linux-amd64.zip \
--assets \
--download rain.zip \
download https://github.com/aws-cloudformation/rain

But the name of the downloaded file is the same.
Am I missing something?

The --download option worked for source downloads only. In v1.4.1 fixed it up so it works for asset downloads as well.
Please update.

With version 1.4.1 the second command creates a file called rain.zip as expected.
Thanks for the quick resolution.


Request 'root' for the one drive. The folder 'receipts' is probably a leftover from developer's account.

This is how i wanted it to work... all receipts in a specific folder.


Add TaxonomyElementArray to schema

TaxonomyElementArray is added to schema for use with OB Taxonomy Element Array.

This looks good to me.


Fix typo in blog post

https://github.com/eclipse-tractusx/eclipse-tractusx.github.io/blob/4de8379fd2f80de5ce34a9e3babbec4d2f8b02d0/blog/2023-09-08-release-23.09.md?plain=1#L32
exiting vs. exciting :)

Fixed with #426


Bump rosetta-sdk-go to v0.6.10

This is a draft proposal.
I didn't go deep into the rosetta specs. Just to make it compile and run.

We've brought this up to date in another PR. Sorry for the delay.


How to set TEXT if i set the DisplayValue to an ID's?

Hey this plugin is so great and i'd love to use this for my projects and i get stuck when i use this plugin. I trying to show the text of the data as a text and the id of the data as a value for input text, which is my JSON data is like this:
[{"id":3,"text":"aut"},{"id":6,"text":"aut"}]

and my Javascript code:
var tags = new Bloodhound({
  datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  remote: {
    url: 'api/v1/tags/%QUERY',
    wildcard: '%QUERY'
  }
});

tags.initialize();

$('#tags').tagsinput({

    typeheadjs: {
      name: 'tags',
      displayKey: 'text',
      valueKey: 'id',
      source: tags.ttAdapter()
    }
});

i've trying to use itemValue: and itemText Option, but if i set that options in my javascript function, the users cant add a new tag. Is that possible if i show the text on the input form?

shouldn't it be 'typeaheadjs: {' instead of 'typeheadjs: {' ? seems like 'a' is missing


Panel with table display issue

Additional border and bottom margin causing display issue.

Similar to issue in Panel with list-group display issue #10. See comment there.

Resolved in commit 7d929ba


decrease main arena length

the arena as it is now is suuuper long (X-axis). this was done in an attempt to be "accurate" to how long it looks in Undertale, but i think when i made it i was actually using the full screen length instead of the length between Flowey's arms

green is what the arena's length should actually be (bounded by Flowey's arms)
red is what it currently is meant to approximate

this change would lead to us needing to change most attack's parameters so they respect the new arena bounds. for example:

dentata snake wall positions for bouncing
finger guns summon positions (+ despawn timing)

the attack parameters could definitely be changed iteratively in later PRs though; we don't have to do everything all at once (yay source control + iterative development!)

this was started and mostly complete for the Summit world in https://github.com/TheAfroOfDoom/omega-flowey-minecraft-remastered/pull/193


Fix Container Tests by adding missing container start method

Description
In the static prune() tests, the call to wait Container.start({ id: resp.Id }) was missed, which returned a 404 error.

LGTM


Download of pathogen fails (curl SSL: certification verification failed)

Hi!
I know you hate to hear this based on recent issues but the curl command in the README (curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim) gives me a:
curl: (51) SSL: certificate verification failed (result: 5) error.
Even fails when I do curl -O https://raw.githubusercontent.com/tpope/vim-pathogen/master/autoload/pathogen.vim
It downloads only if I use http instead of https.
Any thoughts?

Hi.  I just follow orders , but the curl -LSso.... command gives me
cur:(23) Failed writing body (O!= 12476).
Can you help me out?


Implement Char#*(times) operator

Comes useful when in need to repeat just one Char without reverting to String.

LGTM

Sorry, I'll have to intervene and say no to this. What's the use case for this?
Plus, doing 'a' * 1 # => "a" feels strange. And then, chars and integers are usually intermixed, and we definitely don't want to suddenly allow multiplying chars by integers with a string as a result. String#* already allocates memory, so if you have a single char and need it repeated times (and this something that will probably never happen) then convert it to a String first.
Finally:
'a' + 1 # => b
'a' * 2 # => "aa"

Doesn't make sense at all.
Plus the code for multiplying a Char and String is almost identical, I wouldn't like to have that in the codebase.

@asterite Fair 'nuff, I was thinking too about intermixing chars and integers which doesn't makes much sense. Also, we need to allocate String anyway so performance gain is minute if any. Thanks for looking into it!


Feat/sponsorship in app notification

Sample in-app notification:

TIS21-5773
TIS21-5616

Sorry  @Judge40 . It has been force pushed as it was rebased from the main branch after referral notification get merged.


Configured table to use non existent compaction service and saw no errors or warnings

Describe the bug
Configured a table to use non existent compaction service and saw no errors or warnings in the logs.  Also no compactions ran for the table even though they needed to.
Expected behavior
The CompactionJobGenerator should log errors or warning for this.

TabletGroupWatcher.manageTablets calls CheckCompactionConfig.validate at:
https://github.com/apache/accumulo/blob/a3fd1edd109178c4887ae1488c5bdb4e1b0d5753/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java#L440-L453
Maybe this is not a case handled by the validate code?


How to test using my trained model?

Hello!
I use your repository, and I trained own my image data and got weights file(u2net.pthu2net_bce_itr_8000_train_0.195329_tar_0.024132)
But how do I run u2net_test.py with my trained model?
I added this codes.

elif(model_name=='u2net.pthu2net_bce_itr_8000_train_0.195329_tar_0.024132'):
print("...my model")
net = u2net.pthu2net_bce_itr_8000_train_0.195329_tar_0.024132(3,1)

How should I modify "net = u2net.pthu2net_bce_itr_8000_train_0.195329_tar_0.024132(3,1)" ?
Thank you for reading.

You need to load it like this:
net = U2NETP(3,1)
net.load_state_dict(torch.load(your_model_path))


ACCUMULO-4624 Decrease level in user manual TOC

Decreased levels from 4 to 2

This is a small change but one that others might not want so I am putting it up for review.

Was curious what this changed. Original (toc:4) on the left and the proposed change (toc:2) on the right.

It definitely cleans up the TOC. I'm not sure if it would be confusing to users who use the TOC to find a specific sub-sub-section (that now isn't there). I think I'm +0 presently.


feat: enable hermetic library generation

This is part of the effort to enable multi-version support in hand-written libraries. More context and details in this doc.
This PR adds two workflows and their scripts:

update_generation_config which updates generation_config.yaml (added in this PR) to contain the latest googleapis_committish (source of truth of library generation) as well as other dependencies such as gapic_generator_version. This job runs nightly and creates a PR that modifies the config yaml.
hermetic_library_generation which reads generation_config.yaml and pushes a new commit to any PR whose latest commit affects generation_config.yaml (e.g. the nightly PR created by update_generation_config). It essentially translates changes in the config yaml to changes in the source code (of the generated part). This workflow will be a required check.

As an example of how they work in practice:

Once per night, update_generation_config creates a PR that updates generation_config.yaml with the latest dependencies and googleapis committish
hermetic_library_generation is triggered by this PR and generates the corresponding code changes. A new commit with the code changes is added to the PR. This step may occur for any PR affecting generation_config.yaml.

Follow ups

[ ] Add CLOUD_JAVA_BOT_TOKEN to repository for the hermetic generation workflow to work

Have you run these workflows to test out?
The .sh files look good, although I'm not the best person to review bash files. Given that this is probably done consistently across other repos, would it make sense for someone else from your team to review as well?

@ehsannas thanks for taking a look.
We have tested the scripts in a fork (example PR, example workflow run). These tests are tracked in this internal doc.
We will also go through a review from @blakeli0 (adding now). We need both approvals before we merge this PR.


Need a Logo for the website

🚀 Feature
Need an awesome logo for the website.
This is an open issue, we aren't going to assign anyone for this issue. You can submit your logo in this thread and we will choose the best one and going to add it to our website.

I as a LGMSOC would like to work on it could you assign this issue to me.

Hello Sir.
Can I contribute in this issue.
I am a participant of LGM-SOC.
If possible please assign it to me.
Thanks 😊

I'd like to work on this as a participant of LGMSOC '21.

This is an open issue, we aren't going to assign anyone for this issue. You can submit your logo in this thread and we will choose the best one and going to add it to our website. @nisha331  @aum-singhal @Nikhita28

Here are two designs that I have made.

@niloysikdar and @nilisha-jais  please look at this.

I have come up with these.

Sir, I want to work on this as an LGM participant, kindly assign it to me.

@souvikrajsingh please show your design in this thread @niloysikdar  decide which logo is best and then they assigned it to that contributor

Here the design that I have made

Here the design that I have made

White Themed

Black Themed

All the logos are amazing! Let @niloysikdar only decide.
(I liked @Nikhita28 's logo to be the most)

there are two more @niloysikdar and @nilisha-jais  I hope you liked it.

sorry for the spelling mistake I will correct it.

I would like to solve this issue. It would be great if I get this issue assigned to me.

corrected version

is any logo is final out for website @niloysikdar @nilisha-jais

@nilisha-jais kindly have a look at the new entries.

@niloysikdar choose one between @Nikhita28 's and the last entry by @starrohan999 !

I think the last two logos of @Nikhita28 are perfect for both dark and light themes. @Nikhita28 assigned you the issue. Please make a PR for the same with those logos.


RFC: Macro syntax to count sequence repetitions

Rendered view

Yeah, your arity!() macro can't handle arity!(None, Some(_)), because it thinks it's doing expressions and I really wanted patterns.

@kballard for completeness, that's easily fixed. The following seems to work for everything but item and meta (it allows mixed lists but there shouldn't be any ambiguity):
macro_rules! arity {
    ($e:tt, $($toks:tt)+) => { 1 + arity!($($toks)+) };
    ($e:tt) => { 1 };

    ($e:pat, $($toks:tt)+) => { 1 + arity!($($toks)+) };
    ($e:pat) => { 1 };

    ($e:expr, $($toks:tt)+) => { 1 + arity!($($toks)+) };
    ($e:expr) => { 1 };

    () => { 0 };
}

@kballard are you still pursuing this? I am in need of the repetition index in some macros I am writing and there is currently no way of getting this in the current state of macros. Is the discussion done here folded into some other rfc that would provide such functionality in some other way? Or do you have plans of pursuing this rfc further?

@alkis it's possible but you need to use recursion (you can't do it with the $(...)* syntax).

@Stebalien if you use recursion the repetition index will not be a literal but an expression. The index of the N'th item will expand to something like 0 + 1 + 1 + ... + 1. If you want the index to be used for accessing an element of a tuple unfortunately an expression won't work. AFAIK only a literal works.

@alkis I see. No, this doesn't work with tuples etc.

So what needs to be done to advance this RFC?

is this rfc abandoned? superseded?

I think procedural macros https://github.com/rust-lang/rust/issues/38356 will make this largely unnecessary.

@SimonSapin Procedural macros are generally a heavy-weight solution and counting is something I've needed quite often in declarative macros (although building a 0 + 1 + 1 ... expression is usually sufficient).

At least building this as a procedural macro outside of the standard library would make it easier to make a case for inclusion in std in a new RFC.

Oh, I see. Good point!


Avoid docker image/volume collision by prefixing with project slug

Description
Hi, it's my first contribution ever, this pull request is related to issue #3254 and issue #2849.
The problem happens when we create a second django-cookiecutter project on our dev machine, there is a conflict between the container_name: postgres from the first project with the new one:
ERROR: for postgres  Cannot create container for service postgres: Conflict. The container name "/postgres" is already in use by container "...". You have to remove (or rename) that container to be able to reuse that name.

ERROR: for docs  Cannot create container for service docs: Conflict. The container name "/docs" is already in use by container "...". You have to remove (or rename) that container to be able to reuse that name.

ERROR: for postgres  Cannot create container for service postgres: Conflict. The container name "/postgres" is already in use by container "...". You have to remove (or rename) that container to be able to reuse that name.
ERROR: Encountered errors while bringing up the project.

Checklist:

[x] I've made sure that tests are updated accordingly (especially if adding or updating a template option)
[x] I've updated the documentation or confirm that my change doesn't require any updates

Rationale
To avoid conflict, the compose_name has now a prefix of the project_slug defined on the project creation.
Fix #2849
Fix #3254

Thanks for the fix! 🎉

@browniebroke, thank you for the opportunity, I'm going to help more the communities.


drivers: intel_adsp_gpdma: Fix release ownership

Fixes a bug in intel_adsp_gpdma_release_ownership(). Before fix, this function actually did nothing for ACE platform and the ownership was not released. Now ownership is released to host CPU + DSP.

The fix only affects Intel ADSP ACE platform.
Current version of Linux driver seems do not access GPDMA and GPDMA SHIM registers so unreleased ownership did not hurt us. But, anyway, it's better to have this to work properly.


Add a new lint to prohibit using DSA

This is my attempt at addressing #537 although I expect there may be a number of changes that will be needed as this is my first attempt at adding a lint to zlint.  I created a new certificate to cover an error case but I reused some of the certs already in testdata to cover Pass and Not Effective cases.
Please let me know if and when anything needs changing :)

@cpu cpu closed this now
@cpu cpu reopened this now

CI statuses looked jammed up. Gave it the ol' close/open to get things flowing again.

Was the intent to only add this as a Mozilla test, or to also reflect that the BRs also now forbid this? I probably worded the issue wrong, but was trying to capture from (moz 2.4.1 effective date to BRs 1.7.1 effective date), Moz forbade it, and then onward, the BRs forbade it.
I suspect that means two separate lints (this was the question part of #537 ), and I’m fine with only tackling one of those in this :)

Two lints :)

Yeah, sorry for confusing things yet again :) We resolved on the issue two lints, and so I just wanted to make sure this wasn’t seen as closing out the issue, since this is only one lint. But I’m definitely good with landing this lint as is, or also duplicating it (and changing the effective date) as a BR lint, which would then close #537

Howdy @sleevi. I'm gonna merge this and I went ahead and fired up #574 to track the similar work for the BR effective date.


Metagenomic binning: links from HTML report break when copied to another location

Bob, not sure if this belongs to you or Bruce or workspace/UI people.
I copied a completed metagenomic binning job result from Rebecca's workspace to public workshop folder and made those bins public, so that we can use them in workshop.
<EMAIL_ADDRESS>Workshop/Metagenome Binning/Louse Fly Metagenome/.Louse flie metagenomes ERR969522/BinningReport.html
The binning report and genomes are accessible. However, when I click on the link for problematic roles, it breaks because it points to the files in Rebecca's workspace.
It looks like the link it hard coded with fixed url, instead being relative to the directory it is on, which could be a problem when users try to copy/move job results.
Who would be the right person to address this?
-Maulik

This is fixed in a2860ab33fb5a277e1377f33e95d90617e32973b and will deployed shortly.


chore(4.3): release 1.6.18

:robot: I have created a release beep boop
1.6.18 (2022-03-21)
Bug Fixes

cr: mount missing google creds when using spanner as a persistence (ff2dc86), closes #413
ingress: add device-code and firebase messaging ingress (a7fe730)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/GluuFederation/cloud-native-edition/releases/tag/v1.6.18 :sunflower:


Additional Text Classification dataset

🚀 Feature

Include Twitter Sentiment dataset for Text Classification sample
Motivation
Twitter Sentiment dataset is popular for learning Text classification. Incorporating it here would help check effectiveness of GNNs with respect to existing Machine/Deep Learning approaches
Pitch
Similar to 'Trec' dataset present, 'Twitter' dataset can be added.
Additional context
The Twitter dataset is on similar lines as that of https://www.kaggle.com/divakarsarma/sentiment-analysis

I am ready to volunteer for this submission

Welcome! Thank you for your interest and contribution!

@AlanSwift  As mentioned before, I can implement this and send it to you all for review via pull request

@yogeshhk Yes, I will review your pr. We are expecting your excellent contribution!

Hi @yogeshhk, could you please offer a download link to the processed Twitter Sentiment dataset which can be downloaded directly using wget? Due to storage limitations, we will not add any more datasets to our repo. Thank you!

Ok, got it. Thanks for the response.


Save write error

I am experiencing a bug with the save system. When I click save I get this error:
ERROR:SCRIPT: matchanovel/engine/defold/filesys.lua:29: bad argument #1 to 'write' (string expected, got boolean)
stack traceback:
[C]:-1: in function write
matcha	novel/engine/defold/filesys.lua:29: in function write_binary
matchanovel/defold_gui/images.lua:149: in function save_cached_screenshot
matchanovel/defold_gui/menu.gui_script:1220: in function write_save
matchanovel/defold_gui/menu.gui_script:1430: in function use_save_slot
matchanovel/defold_gui/menu.gui_script:1663: in function input_save
matchanovel/defold_gui/menu.gui_script:2120: in function <matchanovel/defold_gui/menu.gui_script:1966>
To reproduce this error, I did this:
(on linux ubuntu 22.04):
git clone https://github.com/HalfstarDev/matchanovel
I opened the game.project in defold 1.8.1 stable
I added https://github.com/subsoap/defos/archive/refs/tags/v2.7.1.zip as a dependency (defos)
I built the game with ctrl+B
while playing the demo, I try to save in the options menu.
I also noticed an issue if I bundle the game for linux. The bundle doesn't show any errors, but if I play the bundle, the game takes me to a black screen after the title screen. I was able to play the demo in the editor with ctrl+B but the bundle doesn't let you play the demo at all.

Thanks for the report. I fixed this in v0.2.3. Try opening the newest template project with Defold 1.9.0.
For screenshots to work, you also need the extension defold-screenshot, which is already included in the template. I also changed it to just use no screenshot for saving if the extension does not work or is not installed, instead of crashing.
For bundling, you have to add the assets folder to the custom resources in game.project for the bundled game to access them. This is preset in the template project as well, so just use this: MatchaNovel.Empty.Defold.project.English.zip

Thank you for looking into this. The saves and screenshots are working for me now. I really appreciate it.
I am still having problems bundling the game. Is there another setting that needs to be enabled to get the pictures to show up in the bundled game?
I put the assets from the chloe example project into the assets folder of the template.
The game plays correctly when I build it in the editor with defold 1.9.0 and I can see the pictures.
In the game.project settings, custom resources says assets.
When I bundled game and played it, I see only white backgrounds with the name of the background in the top left corner.
Texts appear and are interactive, but none of the sprites or background pictures are showing up.

Can you try if this version works? Just replace the old folder /matchanovel with it.
matchanovel_fix.zip

Yes! The bundles work perfectly with this new folder! Thank you so much.


Add pre-commit

I took the liberty to add a simple pre-commit pipeline to auto-format the code using tools like black, isort and others.
If you like the idea, you can register this project at https://pre-commit.ci/ to add pre-commit to the CI for PRs and stuff.
One open problem in this PR, I wasn't able to install an old enough version of poetry that still uses lock-version 1.1 without breaking all other dependencies for this project in my virtual environment. Maybe you can help?
PS: I also added a few sentences on FlightGears Telnet from my personal experience into the Telnets example. Not sure if it fits in there or if this should be a new page in the docs.

Thanks for the PR :slightly_smiling_face: I appreciate the enthusiasm! For pre-commit checks I'd like to keep them contained in CircleCI though; I can do that integration at a later time.

PS: I also added a few sentences on FlightGears Telnet from my personal experience into the Telnets example

Good information! I'm very surprised that they don't take the hostname into account :cold_sweat: I think putting that info in both the example code as well as the .rst docs would be fantastic.

I'll close this PR as it's a bit too much churn, but could you open a new PR with the documentation changes? :smiley:

I'll close this PR as it's a bit too much churn,

I know, implementing a formatter always changes a lot, but than again, all I really changed where adding the pre-commit file and adding pre-commit to the dependencies, everything else followed from it.

but could you open a new PR with the documentation changes? 😃

Will try later this week 😊


Add tests for linting libraries.

We have library code for our linters that we might want to add test suites for.
Some of the linting libraries, such as tools/linter_lib/pep8.py, are basically wrappers around subprocess calls, so they might be a bit of a challenge to test, and they may be low priority.
A good library to start with is probably tools/linter_lib/custom_check.py.
This was split out from #1638.

@zulipbot claim.

@derAnfaenger Am I remembering correctly that you were looking into this at some point?

Sort of. I have some experience with the linter now, can have a look into this.