Revert "Optimize remote state stale file deletion (#13131)"

This reverts commit b9befaa12524744ffe71d3f12699cb27cb8fca5e.

Description
Introduces new flaky tests https://github.com/opensearch-project/OpenSearch/issues/13968
Related Issues
Reverting #13131

Check List

[X] New functionality includes testing.

[X] All tests pass

[X] New functionality has been documented.

[X] New functionality has javadoc added

[X] API changes companion pull request created.
[X] Failing checks are inspected and point to the corresponding known issue(s) (See: Troubleshooting Failing Builds)
[X] Commits are signed per the DCO using --signoff
[X] Commit changes are listed out in CHANGELOG.md file (See: Changelog)
[X] Public documentation issue/PR created

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

@andrross @dblock reverting due to new flaky tests, @sachinpkale  @shiv0408 please resubmit when flakyness is understood and eliminated.

@reta rather than reverting the whole change, can we disable the test instead? I found the reason for flakiness and we can discuss how we can modify the test to accommodate that. Does necessarily need to revert the whole change.

@reta rather than reverting the whole change, can we disable the test instead? I found the reason for flakiness and we can discuss how we can modify the test to accommodate that. Does necessarily need to revert the whole change.

@shiv0408 the nature of the failure is unknown - either impl is not stable or test is not stable, please spend more time on the change and resubmit it.

Reverting this commit will just bring another flaky test #12798, which was removed as part of this.
If we can wait for a day to merge this, I would rather want to raise a fix for the test.

I will reopen the issue than, thanks for heads up

❌ Gradle check result for 4bdac24: FAILURE

https://github.com/opensearch-project/OpenSearch/issues/10314


[Bug] skills granted by items aren't used by the item itself

When an item is created to give the user a skill

this skill isn't used by the item itself for the porpuse of attack.

It works in the upcoming 0.10.0 release, so I am going to close this.

The issue still persists.

Granted

Ok, I "think" I fixed it this time ;-)   It will be in 0.10.3.


EXVT-1944 Create useDynamicAttribute

Looks good!
Maybe we should improve react-window typings? Seems that the function node is not typed at all, or am I doing something wrong? Needed to explicitly type its props:

@Stefanwullems what do you think: should we avoid using index as filenames?

@Michiel87 @Stefanwullems can we try to merge this asap?

I think it'd be better if @Michiel87 reviewed this.


Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

I get an error when I run the stock dind host container, but use a slightly modified client container that starts FROM docker:latest.
Here's my host:
docker network create -d bridge some-network

docker run --privileged --name some-docker -d \
  --network some-network --network-alias docker \
  -e DOCKER_TLS_CERTDIR=/certs \
  -v some-docker-certs-ca:/certs/ca \
  -v some-docker-certs-client:/certs/client \
  docker:dind

And here's my slightly modified client container's Dockerfile:
FROM docker:latest

RUN apk add bash

RUN mkdir /app /builds /builds/default
WORKDIR /app

COPY ./entrypoint.sh /app/entrypoint.sh

ENTRYPOINT ["/app/entrypoint.sh"]

And here's what my entrypoint.sh looks like which calls the script in the oridinary entrypoint and then calls my own function.
#!/bin/sh

set -e

dockerd-entrypoint.sh || true

echo "finished dockerd-entrypoint"
docker ps

This is the output when I try to boot my container:
$  docker run -it --rm --network some-network \
  -e DOCKER_TLS_CERTDIR=/certs \
  -v some-docker-certs-client:/certs/client:ro \
  -v $(pwd):/builds/default \
  docker-build-scan-push

Certificate request self-signature ok
subject=CN = docker:dind server
/certs/server/cert.pem: OK
chmod: /certs/client/key.pem: Read-only file system
finished dockerd-entrypoint
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Any idea why that doesn't work?  I'm wondering if I'm confused about how ENTRYPOINT works.  It seems like everything works as long as I leave the stock entrypoint and add my startup script as a CMD instead, but what I want is for docker to be booted up correctly and for my script to run during the entrypoint cycle of the container.

I'm not sure I understand - why are you trying to run dockerd-entrypoint.sh inside your client container? :sweat_smile:

You want to run your script wrapped around the docker-entrypoint.sh (not dockerd-entrypoint.sh); ala, ENTRYPOINT ["docker-entrypoint.sh", "/app/entrypoint.sh"]
For more help beyond that, I would suggest finding/trying a dedicated support forum, such as the Docker Community Slack, Server Fault, Unix & Linux, or Stack Overflow.

Haha, no, this discussion resolved the issue cleanly, @tianon, thanks.  I had never encountered this pattern before I wound up patching the dockerd-entrypoint.sh and not knowing a whole lot about the interactions between the set command and exec $@ I what is now clear to me an embarrassing mess.
Thanks again for the help!


Fixed SetRTCColor calls

Companion to RTCV#87

I don't remember turning SonarCloud on on this repo but I'm not going to kick him out.


Joplin theme as a plugin

Suggestion to make this a Joplin plugin using [Joplin Plugin API]. (https://joplinapp.org/api/references/plugin_api/classes/joplin.html).

Have access to official js Plugin API
Ability to package icons/fonts along with the stylesheets.
Change theme variants from within the app as a setting.
Get listed in the community Joplin plugins list.

Reference: https://github.com/andrejilderda/joplin-macos-native-theme

I actually had a look at this back when I initially wrote the css (including the macOS theme you linked) and it is JS which isn't my strong suit (lol).
But I might be willing to look into this once I get some time off from my university!

Thanks to the rabbit hole for the CodeMirror theming. I ended up installing Joplin, this theme and going through the Plugin API.
I just thought to leave a suggestion before I get out of it.


GroupComponents function: Allow registering multiple components in a single tuple/array

When creating the storage, allow nest tuples of components by simply tagging the neste tuple so that it is not parsed as a component:

const group_a = ecez.GroupComponents(.{MyComponentA0, MyComponentA1, MyComponentA2 });
const group_b = ecez.GroupComponents(&[_]type{MyComponentB0, MyComponentB1, MyComponentB2 });

ecez.CreateStorage(.{
        group_a,
        group_b,
        SingleComponent,
        // ...
    }, .{});

It makes sense to support the components tuple in Createstorage having arrays if types. Then the group components is just converting tuples to array

UnpackComponents migth be a better name


mark xml-rpc support as deprecated

While XML-RPC is still planned to be supported for the next v1.2 release, its usage should be marked in a way to notify users that its use is deprecated. This will help prepare a future revision in removing the legacy API method for Confluence instance management (see #208).

XML-RPC has been marked deprecated on master. Next stable release's documentation will reflect the appropriate warning and a message will be output to the user when used. Will close this issue,


Brackets crashes after reloading

I've experienced this on Windows 8.1 with Brackets 1.4. I have no extensions installed. Reloading Brackets will usually crash after the first reload and sometimes this will happen after the second reload.

This was fixed in #11505.
I think that this particular bugfix should have been pushed as a version PATCH (as in 1.4.1.) instead of waiting for version 1.5. At worst this bug might have affected every Brackets user out there due to it's frequency plus it was a hard crash which makes it even worse. Luckily it doesn't cause data loss.
Brackets hasn't had a patch version yet, but it certainly something that should be looked into in cases like this.

Closing as fixed.
release 1.5 will be end of this month mostly.
tagging @nethip patch release?


[Management Plan][Azure Search] [Draft] Introduce 2 new API versions for exposing shared private link management

In this PR, based on consultation from ARM API review board, Azure Search will be officially "removing" sharedPrivateLinkResources from the existing API versions of 2019-10-01-preview and 2020-03-13. This is because we are introducing several improvements in those APIs, which necessitate breaking changes - and we currently gate those APIs and have 0 usage.
In addition 2 new API versions are introduced, which will ship the sharedPrivateLinkResources APIs in the "desired" state
MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[ ] I commit to follow the Breaking Change Policy of “no breaking changes
[x] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

[x] Ensure to check this box if one of the following scenarios meet updates in the PR, so that label “WaitForARMFeedback” will be added automatically to involve ARM API Review. Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs, all “removals” and “adding a new property” no more require ARM API review.

Adding new API(s)
Adding a new API version
Adding a new service

[ ] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If there are following updates in the PR, ensure to request an approval from API Review Board as defined in the Breaking Change Policy.

[x] Removing API(s) in stable version
[ ] Removing properties in stable version
[x] Removing API version(s) in stable version
[ ] Updating API in stable version with Breaking Change Validation errors
[ ] Updating API(s) in preview over 1 year

Please follow the link to find more details on PR review process.

/azp run automation - sdk

2 diffs that should make things easier to review:
Difference between 2020-03-13 and 2020-08-01 swagger specs (introduction of sharedPrivateLinkResources)
https://www.diffchecker.com/drAZuOoA
Difference between the 2020-08-01 and 2020-08-01-Preview
https://www.diffchecker.com/VRVTwdpd

Make sure you edit the file Readme.md to include the new tags for the new API version.
https://github.com/arv100kri/azure-rest-api-specs/blob/arv100kri/new-api-versions/specification/search/resource-manager/readme.md

Can one of the admins verify this patch?

/azp run automation - sdk

/azp run automation - sdk

/azp run automation - sdk

/azp run automation - sdk

/azp run automation - sdk

/azp run automation - sdk

Signing off from ARM side, since it seems the APIs were gated and had no customer usage. PLease get sign off from azure api review board as well.

@adrianhall @johanste @JeffreyRichter

Why was this ever merged into master if the features were gated? Were there ever any client libraries released with this support?

@johanste @adrianhall @JeffreyRichter Can you please update the tag ('AzureApiBoardSigndoff') if this is signed off?

Why was this ever merged into master if the features were gated? Were there ever any client libraries released with this support?

Why was it merged - oversight. We didn't have guidance back then.
There were no client libraries released with this support.
FYI, I have already discussed this issue with @adrianhall and am awaiting his official sign on on the pr.
I haven't published it yet because the deployment that lights up this api version is in progress

Sorry - thought I had done that already.

Sorry - thought I had done that already.

No worries! Thank you. Btw, this will take atleast another couple of weeks to be check-in ready (it's "ready", but only awaiting the roll out to complete)

/azp run automation - sdk

Prior discussion about my changes, https://github.com/Azure/azure-rest-api-specs/pull/10244

/azp run automation - sdk

/azp run public.rest-api-specs

NOTE: This is the .NET SDK PR that fixes the breaking change automation problem
https://github.com/Azure/azure-sdk-for-net/pull/14059

HI @arv100kri , can you fix linter and avocado validation failure? you should change Preview to preview in your version number to make consistent from others Microsoft.Search/preview/2020-08-01-preview/search.json#L6

/azp run automation - sdk

@ArcturusZhang GO SDK and @changlong-liu to take a look potential impact for breaking change

This will introduce breaking changes to go SDK - but I just checked in terraform, terraform is not using the paths that are removed in this PR, therefore these breaking changes do no impact to terraform

Latest Python azure-mgmt-search is released with api-version '2015-08-19'.
The Breaking change comes from the difference between the api-version 2015-08-19 and 2020-08-01.


[Blockchain] Understanding Altcoins in Cryptocurrencies

Topic Suggestion
Understanding Altcoins in Cryptocurrencies
Proposed article introduction
The cryptocurrency space boomed with the introduction and success of bitcoin. The now most popular coin in the market boosted of providing a future where people could transact and make their investments away from the influence of governments and large centralized institutions. Through bitcoin words like defi(decentralized finance) became popular. However bitcoin's domination in the crypto market faced competition from other coins developed to patch up the  setbacks the popular coin had.
Key takeaways

Reasons for the development of altcoins
An extensive introduction to altcoins
Setbacks that in bitcoins that led to the development of altcoins
Types of altcoins
Functions of each type of altcoin

Article quality
The uniqueness of the article will be  brought out through the article's depth. Additionally, blogs on the web focus only on a single coin, this easily confuses most beginners who are seeking to learn more on crypto currencies. This article will act as a map for anyone who seeks to have grounding knowledge on the different coins available in the market.
References
n/a

Thank you for the topic suggestion, however this is a bit outside of our preferred topic areas. We're more interested in original, practitioner-focused content that takes a deeper dive into programming-centric concepts. Please feel free to suggest an alternate topic to explore.


Auto-apply chat template in SequenceGenerator and SequenceGeneratorAdapter, if available

This PR auto-applies chat templates by default when using instruct/chat models. Doesn't support LlamaCPP for now tho.

Why?
Instruct/Chat models tend to be annoyingly template dependent (i.e. they perform worse if the prompts don't follow the chat template used in the finetuning step). And the more and longer they are finetuned, the worse the problem gets. Hence this PR.
Also see this issue https://github.com/outlines-dev/outlines/issues/987 raised by @lapp0

Interface changes
This PR has minimal impact on the interface. It just changes the default behavior of the generation step.
However, this feature can be disabled either on the creation of the generator:
generator = outlines.generate.choice(model, ["Positive", "Negative"], apply_chat_template=False)

Or when calling the generator
answer = generator(prompt, apply_chat_template=False)

I don't think this is the correct design; we want to avoid kwargs as much as we possibly can. Here I would simply add a apply_chat_template to the model instance.

@lapp0 @rlouf
How do you guys think should the interface look like?

Here, I mirrored Huggingface's Pipeline interface where we can specify configs/args in the constructor and (optionally) override them in the model call. I like it cuz it's more flexible. But yah, it does make things a bit more complicated and less pythonic.
I did a quick look at other libraries, and it seems that they either (1) don't auto-apply the chat templates at all or (2) have a separate code path for base & instruct/chat models (e.g. TGI & MixEval). I think there are two reasons why:

It's hard to know which models are base models and which are instruct/chat models. I thought checking whether chat_template is None or not would suffice. But some chat models apparently just leave them out (especially the older ones & third-party finetunes). Additionally, transformers' PreTrainedTokenizerBase base class has a default_chat_template property--so, if I'm not mistaken, we can run tokenizer.apply_chat_template on all tokenizers without erroring out. And

Some models don't support system prompts and it's hard to know which ones do and which ones don't.

So yah, for now, we need a way to somehow let the library know that whether we're dealing with a base model or an instruct/chat model. Worst case is we might also need to ask the user to specify the system prompt. But if we're gonna force them to go all that trouble anyway, we might as well not do this by default.
I think a good compromise is to (1) not apply the chat templates by default but (2) warn the user if the chat template is specified in the tokenizer config but is not being used.

answer = generator(
   model.apply_chat_template(prompt)
)

I like to give this pull request that adds the possibility to add the apply_chat_template, but I wonder if it's a good idea to make it the default behavior. I have had very bad experiences with apply_chat_template where it add spaces or remove spaces when it shouldn't or even worse in function calling cases where it completely ignores the functions given without even raising errors (see this example). Many people might complain about something which is outside the control of Outlines.

Indeed, we are not going to make it the default behavior. Users should be able to inspect the modified prompt before they pass it to the generator.

@leloykun are you still working on this?

@rlouf yup! I just deprioritized this in favor of other stuff; I'll get back to this soon
btw, thanks for the feedback, @alonsosilvaallende!

So can this feature still be added? A chat template is really needed in many applications.

So can this feature still be added? A chat template is really needed in many applications.

Yes, if you'd like to introduce it in a PR, I'll review and support its inclusion provided it follows the behavior discussed in this thread! :)


Failing system test assertion about ObservationForm year.

CI fails 100% because of the following.
The assertion at ObservationFormSystemTest line 17 fails 100% of the time in CI and locally, even though the app behaves correctly. (it fails regardless whether run individually or as part of a larger group of tests (e.g., test:all, test:system). )
The assertion fails.
% rails t test/system/observation_form_system_test.rb:17
Started with run options --seed 32457

[Screenshot Image]: /Users/joe/mushroom-observer/tmp/capybara/failures_test_create_minimal_observation.png-=---=---=---=---=---=---=---=---=---=---=---=---=---=---=--] 0% Time: 00:00:00,  ETA: ??:??:??
 FAIL ObservationFormSystemTest#test_create_minimal_observation (10.87s)
        expected to find visible field "observation_when_1i" that is not disabled with value "2024" within #<Capybara::Node::Element tag="form" path="//HTML[1]/BODY[1]/DIV[1]/DIV[2]/DIV[1]/MAIN[1]/FORM[1]"> but there were no matches. Also found "", which matched the selector but not all filters. Expected value to be "2024" but was "2023"
        test/system/observation_form_system_test.rb:17:in `block in test_create_minimal_observation'
        test/system/observation_form_system_test.rb:15:in `test_create_minimal_observation'

The relevant lines of the test are:
    click_on("Create Observation")

    assert_selector("body.observations__new")
    within("#observation_form") do
      # MOAutocompleter replaces year select with text field
      assert_field("observation_when_1i", with: Time.zone.today.year.to_s)

It fails even if I sleep(10) just prior to the assertion.
The app behaves correctly.
If I run the app it behaves correctly:2024 appears in the year field, and Observations are created with the correct year.
But the developer console is strange. In particular, a search for "2024" has no relevant hits.

That's weird alright. If I break in the test, I get:
(ruby) Time.zone.today.year.to_s
"2024"
(ruby) find("#observation_when_1i").value
"2023"

So the form is filling in the date with last year. app/views/observations/form/_when.html.erb calls date_select_opts(@observation). If I break within that helper:
   443|   def date_select_opts(obj = nil)
=> 444|     debugger
   445|     start_year = 20.years.ago.year
   446|     init_value = obj.try(&:when).try(&:year)

obj.when
Sun, 19 Nov 2023

The issue is that the new observation is initialized with the old date from last year. Hmm.

Yup. I couldn't figure out the source of "2023".
Could you get by with just a capybara integration test:
  def test_new_observation_year
    user = users(:dick)
    login(user)

    visit(new_observation_path)
    assert_select("observation_when_1i", text: "2024")
  end

Ok. This is one of those interesting cases where the system test is showing up an issue in our code, not the other way around.
The obs date is getting set in ObservationsController::NewAndCreate#defaults_from_last_observation_created. For any new observation we are grabbing when, among other atts, from the last obs created.
In the test suite, that date seems to be 19 Nov 2023.
  def defaults_from_last_observation_created
    # Grab defaults for date and location from last observation the user
    # created if it was less than an hour ago
    # (i.e. if its creation time is larger than one hour ago)
    last_observation = Observation.where(user_id: @user.id).
                       order(:created_at).last
    return unless last_observation && last_observation.created_at > 1.hour.ago

    %w[when where location is_collection_location gps_hidden].each do |attr|
      @observation.send("#{attr}=", last_observation.send(attr))
    end

I'm not sure how to fix. I'm noticing we don't grab the last-used values unless the last obs was created more than an hour ago. I imagine that's to facilitate logging obs from awhile back. But maybe there should also be an upper limit, like "use today's date if the last obs was more than a week ago" or a month, or ...?
I'll leave this to you to fix, if you don't mind!

Thanks for looking into this and figuring out the cause.
I expect the fix is easy:" pick a user with no Observations ("zero").
I'll give it a try.

Makes sense! And I wouldn't have thought of that so quickly.
By the way - the reason it's being tested by a system test is this:
The Rails "date picker" helper creates a "select" for the day, month and year, but like many other apps, MO prefers to have the year as a text field. Jason long ago wrote, and I recreated in Stimulus, a bit of JS replacing the year select with a text field. So that system test is making sure that replacement is happening.

Thanks for the extended explanation.
The suggested fix works. (The right user is actually zero_user.). I'll get it merged.


Object limits

We should add a note or update the text, quoting from :
https://azure.microsoft.com/en-us/pricing/details/active-directory/
"Default usage quota is 50,000 objects. An object is an entry in the directory service, represented by its unique distinguished name. An example of an object is a user entry used for authentication purposes. If you need to exceed this default quota, please contact support. The 500K object limit does not apply for Office 365, Microsoft Intune or any other Microsoft paid online service that relies on Azure Active Directory for directory services."
This should also reflect in https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/azure-subscription-service-limits

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 42a0b4cb-1981-1cbc-ce2c-dbfd8af1527c
Version Independent ID: d49c873c-9843-8428-a6d1-a1995067d13b
Content: Service limits and restrictions - Azure Active Directory
Content Source: articles/active-directory/users-groups-roles/directory-service-limits-restrictions.md
Service: active-directory
Sub-service: users-groups-roles
GitHub Login: @curtand
Microsoft Alias: curtand

Hi @ilantz
The note is added. The 300K object limit is a service limit. The 500K figure is for pricing tier definition only. I added a note to this effect to the service limits page.
MicrosoftDocs/azure-docs-pr#106008
#please-close


Wrong file ownership on root filesystem

Windows Version
Microsoft Windows [Version 10.0.22621.1555]
WSL Version
<IP_ADDRESS>
Are you using WSL 1 or WSL 2?

[X] WSL 2
[ ] WSL 1

Kernel Version
<IP_ADDRESS>
Distro Version
Ubuntu and all releses of it
Other Software
No response
Repro Steps
This has been observed on all the releases of Ubuntu.
To reproduce the issue, install a WSL instance from the store.
While investigating issues with failing services of systemd, we found that some files and directories are not owned by the right users.
For instance:
/usr/bin/crontab root/77 instead of root/crontab (0/104)
/var/spool/rsyslog 18/16 instead of syslog/adm (104/4)
/var/log/journal/ root/78 instead of root/systemd-journal (0/101)
usr/lib/dbus-1.0/dbus-daemon-launch-helper root/18 instead of root/messagebus (0/105)
...
users and groups on an installed WSL instance sometimes differ from users and groups of the root filesystem (the initial tarball); some do not match the correct id from the root filesystem, others are nonexistent.
A guess is that when the rootfs tarball is extracted during the installation of the instance, the tar command uses the passwd and group databases of the root WSL VM instead of the passwd and group files of the root filesystem and wrongly maps user names and group names.
The consequence is that the system will not operate properly. System units are not starting, or commands won't execute properly, for example.
Expected Behavior
User and groups are unchanged compared to the original root filesystem
Actual Behavior
Some files have incorrect ownership.
Here is the list of files that we found have the wrong ownership
--- rootfs.list	2023-04-14 16:16:50.770067493 +0200
+++ wsl.list	2023-04-14 16:16:10.365804172 +0200
-0/104 usr/bin/crontab
+0/77 usr/bin/crontab

-0/105 usr/lib/dbus-1.0/dbus-daemon-launch-helper
+0/18 usr/lib/dbus-1.0/dbus-daemon-launch-helper

-0/43 usr/lib/x86_64-linux-gnu/utempter/utempter
+0/13 usr/lib/x86_64-linux-gnu/utempter/utempter

-0/43 var/log/btmp
+0/13 var/log/btmp

-0/101 var/log/journal
+0/78 var/log/journal

-0/43 var/log/lastlog
+0/13 var/log/lastlog

-0/4 var/log/unattended-upgrades
+0/16 var/log/unattended-upgrades

-0/43 var/log/wtmp
+0/13 var/log/wtmp

-0/8 var/mail
+0/34 var/mail

-0/104 var/spool/cron/crontabs
+0/77 var/spool/cron/crontabs

-104/4 var/spool/rsyslog
+18/16 var/spool/rsyslog

Diagnostic Logs
No response

I am confused too. I would understand the name doesn't match, but not a change of the UID/GID.
I did the following test:

Download the rootfs of 22.04 and Ubuntu: https://cloud-images.ubuntu.com/wsl/jammy/current/ubuntu-jammy-wsl-amd64-wsl.rootfs.tar.gz
check the content of the tar file for one of the erroneous file for example usr/bin/crontab

j-lallement@boedic:~/tmp.notshared/wsl$ tar tvzf ubuntu-jammy-wsl-amd64-wsl.rootfs.tar.gz  usr/bin/crontab
-rwxr-sr-x root/systemd-resolve 39568 2022-03-23 14:49 usr/bin/crontab
j-lallement@boedic:~/tmp.notshared/wsl$ tar tvzf ubuntu-jammy-wsl-amd64-wsl.rootfs.tar.gz --numeric-owner usr/bin/crontab
-rwxr-sr-x 0/104         39568 2022-03-23 14:49 usr/bin/crontab

(on my system crontab is 105 and 104 is systemd-time, and systemd-resolve is 103)

Extract the file with the same-owner flag
sudo tar xvzf ubuntu-jammy-wsl-amd64-wsl.rootfs.tar.gz --same-owner usr/bin/crontab
Check the owner

j-lallement@boedic:~/tmp.notshared/wsl$ ls -l usr/bin/crontab
-rwxr-sr-x 1 root systemd-resolve 39568 mars  23  2022 usr/bin/crontab
j-lallement@boedic:~/tmp.notshared/wsl$ ls -ln usr/bin/crontab
-rwxr-sr-x 1 0 103 39568 mars  23  2022 usr/bin/crontab

It is now owned by systemd-resolve (same name than the tar output) but the GID is 103.
The GID of the same file in WSL is 77.
If I mount /dev/sda, which contains Mariner and search /etc/group for GID 77, it's systemd-resolve.

I'm still confused - we run bsdtar as root so --same-owner would be the default.

Same with bsdtar, the GID is modified on extract:
j-lallement@boedic:~/tmp.notshared/wsl$ sudo bsdtar --numeric-owner -tvf ubuntu-jammy-wsl-amd64-wsl.rootfs.tar.gz usr/bin/crontab
-rwxr-sr-x  0 0      104     39568 mars 23  2022 usr/bin/crontab
j-lallement@boedic:~/tmp.notshared/wsl$ sudo bsdtar -xf ubuntu-jammy-wsl-amd64-wsl.rootfs.tar.gz usr/bin/crontab
j-lallement@boedic:~/tmp.notshared/wsl$ ls -ln usr/bin/crontab
-rwxr-sr-x 1 0 103 39568 mars  23  2022 usr/bin/crontab

It's 104 in the archive and 103 once extracted. I'll dig further tomorrow.

I'm seeing something similar locally:
root@BENHILL-DEV:~# stat usr/bin/crontab
  File: usr/bin/crontab
  Size: 39568           Blocks: 80         IO Block: 4096   regular file
Device: 820h/2080d      Inode: 30694       Links: 1
Access: (2755/-rwxr-sr-x)  Uid: (    0/    root)   Gid: (  103/systemd-resolve)
Access: 2023-04-17 10:08:00.473964561 -0700
Modify: 2022-03-23 06:49:13.000000000 -0700
Change: 2023-04-17 10:08:00.473964561 -0700
 Birth: 2023-04-17 10:08:00.473964561 -0700
root@BENHILL-DEV:~# stat /usr/bin/crontab
  File: /usr/bin/crontab
  Size: 39568           Blocks: 80         IO Block: 4096   regular file
Device: 820h/2080d      Inode: 1322        Links: 1
Access: (2755/-rwxr-sr-x)  Uid: (    0/    root)   Gid: (   77/ UNKNOWN)
Access: 2023-04-12 14:35:19.000000000 -0700
Modify: 2022-03-23 06:49:13.000000000 -0700
Change: 2023-04-17 10:06:04.543573403 -0700

You're right, it looks like ownership information is being inherited from the /etc/passwd file inside the system distro. (you can confirm this by launching wsl.exe --system -u root and looking at /etc/passwd). Looks like we should probably be using the --numeric-owner option.

@jibel - I think I have a fix for this. How did you identify the files that have the wrong owner so I can run that locally to see if the issue is resolved?

@jibel - could you try 1.2.4 and see if that resolves what you're seeing? You'll have to re-register the distro after installing the updated package.
https://github.com/microsoft/WSL/releases/tag/1.2.4

@jibel - I think I have a fix for this. How did you identify the files that have the wrong owner so I can run that locally to see if the issue is resolved?

I created a list of files with owners in WSL, excluding owner root/root (run as root):
find / -xdev -printf "%U/%G %p\n"|sort -k2|grep -v 0/0 > wsl.list
Same with the tarball (add leading and strip trailing slashes):
tar tvzf ubuntu-jammy-wsl-amd64-wsl.rootfs.tar.gz --numeric-owner |awk '!/0\/0/ {print $2, "/" $6}'|sed -e 's/\/$//'|sort -k2 > tar.ubuntu.files
Then diff the two files.
diff -u tar.ubuntu.files wsl.ubuntu.files
There are some extra lines for the diff is small enough to identify the wrong ones.


Bugfix/consensus/catchup block indexing

Changes:

Correctly get 20 blocks when catchup
Update some if statements

Thanks for the review!


Supporting minItems and others in LlamaJsonSchemaGrammar

Feature Description
It looks like LlamaJsonSchemaGrammar had been introduced before llama.cpp had an API for it:
https://github.com/ggerganov/llama.cpp/blob/74d73dc85cc2057446bf63cc37ff649ae7cebd80/common/json-schema-to-grammar.h#L8
With LlamaJsonSchemaGrammar I ran into minItems in my schema not being used, but after looking into llama.cpp it appears they support minItems:
https://github.com/ggerganov/llama.cpp/blob/74d73dc85cc2057446bf63cc37ff649ae7cebd80/common/json-schema-to-grammar.cpp#L972
I was thinking it might be beneficial (but hopefully not breaking) to switch to their version rather than maintain your own.
The Solution
Switch to using json_schema_to_grammar from llama.cpp. If this is a breaking change, it could be exposed as an alternate API, like new llm.LlamaJsonSchemaCppGrammar(llama, schema); and maybe LlamaJsonSchemaCppGrammar derives from LlamaJsonSchemaGrammar or something
Considered Alternatives
Implement minItems in the grammar generator,  which would affect generated rules like this:
rule14 ::= ( rule1 ) ( "," whitespace-b-2-4-rule rule1 )*
rule15 ::= ( rule1 )?

Additional Context
No response
Related Features to This Feature Request

[ ] Metal support
[ ] CUDA support
[ ] Vulkan support
[X] Grammar
[ ] Function calling

Are you willing to resolve this issue by submitting a Pull Request?
No, I don’t have the time, but I can support (using donations) development.

I created the JSON schema grammar implementation in node-llama-cpp before it was introduced into llama.cpp, but I kept it afterward to provide better vertical support for it throughout the entire library, which includes validation and full TypeScript support.
Also, when using function calling, the JSON schema is converted to various formats models expect to get the function definition in, so having a separate implementation allows for enhanced vertical support for each feature of the JSON schema throughout all the relevant components.
As I explained in the documentation, many of the features of JSON schema are not supported on purpose, since they don't align well with the way models generate output, and using them is prone to hallucinations.
While it is possible to force the model to follow more JSON schema options (like the llama.cpp implementation offers), I opted not to do that to make people compose their JSON schemas in a way that aligns better with how models generate output to achieve higher-quality generations and not waste time optimizing the wrong things to get it to work.
Regarding the minItems feature, the issue with it is that when you use it to force the model to generate an array with a minimum number of elements, the model isn't aware of this requirement beforehand and thus will not be able to "plan" the entire content of the array in advance, which may lead it to generate inconsistent and unevenly spread items.
It can also make the model repeat the existing values in different forms, which can also make the model generate an extensively long array since it attempts to continue the existing pattern that was forced upon it.
A better approach would be to tell the model the requirement in advance (as part of the prompt), or force it to generate a value indicative of the continuation of the output you want it to generate.
Here's an example of how you can do that by prompting the model:
const paragraph = "...";
const grammar = await llama.createGrammarForJsonSchema({
    type: "object",
    properties: {
        personNamesInTheGivenParagraph: {
            type: "array",
            items: {
                type: "string"
            }
        }
    }
});

const res = await chat.prompt([
    `Here is a paragraph: ${paragraph}`,
    "Extract at least 10 person names from the paragraph"
].join("\n\n"), {grammar});

const parsedRes = grammar.parse(res);
console.log(parsedRes.personNamesInTheGivenParagraph);

And here's how you can do that as part of the schema itself.
The trick is that you force the model to commit to at least 10 results before it generates the results themselves:
const paragraph = "...";
const grammar = await llama.createGrammarForJsonSchema({
    type: "object",
    properties: {
        minimumPersonNamesInTheGivenParagraph: {
            const: 10
        },
        personNamesInTheGivenParagraph: {
            type: "array",
            items: {
                type: "string"
            }
        }
    }
});

const res = await chat.prompt(`Here is a paragraph: ${paragraph}`, {grammar});

const parsedRes = grammar.parse(res);
console.log(parsedRes.personNamesInTheGivenParagraph);

The minimumPersonNamesInTheGivenParagraph property must be defined before the other properties to force the model to generate it first.

Also, the implementation of the JSON schema conversion in llama.cpp includes support for including schemas from an outside URL.
While it does seem pretty neat, this also poses a significant security risk, and even though it's disabled by default, having it in the codebase doesn't give me comfort since any future change in that functionality can have a wider effect on the security of node-llama-cpp.
My main concerns regarding that functionality are the making of an HTTP request directly from the native code and the parsing of arbitrary remote text (presumably JSON schema, but not necessarily), which I think are better handled on the JS level for improved security and flexibility.

Understood on minimumPersonNamesInTheGivenParagraph, as often what I do beforehand is actually give it an example with comments so that the LLM understands the output I'd like, as well as the grammar so that the LLM is constrained to the output I need. However, the issue is when you get the LLM to "commit to at least 10 results ", well... there's no guarantee of that. In my case, I was prompting it and telling it always generate at least one item, but I'd still find cases where smaller models ignore the instruction and generate an empty array.
In order to fix it, I had to write these lines:
  const outputVideoGrammarEx = new llm.LlamaJsonSchemaGrammar(llama, schema as any);
  // HACK, https://github.com/withcatai/node-llama-cpp/issues/384
  const outputVideoGrammar = new llm.LlamaGrammar(llama, {
    grammar: outputVideoGrammarEx.grammar.replace("rule15 ::= ( rule1 )?", "rule15 ::= ( rule1 )"),
  });

I understand that you mentioned hallucinations, however I've had a lot of success using the more advanced features in llama.cpp (it also has a python version of JSON schema > grammar that I used before, including features like minItems). Feeding an example + constrained grammar seems to work well. I don't think the possibility of hallucinations should be a reason to not provide access to the llama.cpp API.
The llama.cpp version itself does not do any HTTP fetching. You pass in a function callback to SchemaConverter that takes in a URL and returns a JSON object. It's up ton the caller to implement the HTTP request. In json_schema_to_grammar, it passes in an empty callback that always returns an empty JSON object without an actual HTTP fetch. No security issue there.
Thanks for taking a look into this btw! :)

Using small models indeed requires more adjustments to achieve the desired results, and using a more strict grammar can be crucial with such models, so I'll add support for more JSON schema features (including minItems) that are prone to hallucinations, and I'll improve the docs and type docs to help guide on how to minimize hallucinations.
I've taken a look again at the JSON schema converter and couldn't find the HTTP fetching, so it might have changed since the last time looked at it.
However, I still prefer to maintain a separate implementation of the JSON schema converter because every feature added to it has to be supported in other related components (aside from the grammar conversion itself), so ensuring full vertical compatibility of all the supported features is more practical this way.
Thanks for providing context for this :)


[Bug report]:

Version
2.0.12
Description

Expected behaviour

Actual behaviour
не могу войти в приложение. ввожу пинкод . и дальше выдает как на картинке внизу  справа.

Can the issue reliably be reproduced?
Yes
Steps to reproduce the issue
No response
Operating System
Windows
Diagnostics
No response
Developer Profile
No
Profile Type
Software (Stronghold)
Staking
None
Crash Status
None of the above
Error Messages
No response
Error Logs
No response
Duplicate declaration

[X] I have searched the issues tracker this issue and there is none

Code of Conduct

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

Version
2.0.12
Description

Expected behaviour

Actual behaviour
не могу войти в приложение. ввожу пинкод . и дальше выдает как на картинке внизу справа.
Can the issue reliably be reproduced?
Yes
Steps to reproduce the issue
No response
Operating System
Windows
Diagnostics
No response
Developer Profile
No
Profile Type
Software (Stronghold)
Staking
None
Crash Status
None of the above
Error Messages
No response
Error Logs
No response
Duplicate declaration

[x]  I have searched the issues tracker this issue and there is none

Code of Conduct

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

@MI999M thank you for opening this bug You're experiencing transcript error. It sounds like your query would be best dealt with by the support team.
I'll have to refer you to the official support live chat with the ticket ID STE07638
Please see the link below to our dedicated support line:
Stellar live support
Note; Click on the live chat icon at the bottom corner of the page to initiate chat with a live support agent.

⚠ ⚠ ⚠ ⚠  Please do not follow any links from the previous message, it was a scam message ⚠ ⚠ ⚠ ⚠

The error means that your system does not have the right time, please sync your machine and try again, the issue should be gone when the time is correct


[EN-1248] Fix compound AccrueInterest error

Copied from the PR on blep repo:

Is there a reason to keep https://github.com/blep-ai/blep/blob/develop/data/connectors/source/compound/ctoken/ctoken.gen.abi.go ? I think ctokeninterface has all the events we need already, no need to keep the actual old ctoken.sol?

Copied from the PR on blep repo:

Is there a reason to keep https://github.com/blep-ai/blep/blob/develop/data/connectors/source/compound/ctoken/ctoken.gen.abi.go ? I think ctokeninterface has all the events we need already, no need to keep the actual old ctoken.sol?

Because there are two AccrueInterest events with different signatures @azhang


Migration generator

I was looking for a tool to handle the migrations for me (although I am using Doctrine DBAL I am not using Entities or the RM ATM).
Right now I make changes to my local DB and occasionally forget table changes, which of course break code when pushed to staging and worse when they make it to production. Migrations would prevent this. However for speed of work flow (for me personally) it would be nice if an addiitonal command such as "Generator" or "Skeleton" was introduced which allowed Phinx to generate the migrations based on the diff test performed on two databases (either two local DB's or a development VS staging, etc).
Is this completely out of context on what you plan on offering with Phinx? Does your DB API support viewing meta data? Have you considered using the Doctrine DBAL?
Just a thought -- great work BTW -- I will totally use this moving forward until I get everything ported over to ORM.
Alex

This was a killer feature for CakePHP 2's Migrations plugin. (Alas, abandoned since Cake 3 switched to Phinx.) I found that the safest and quickest way to build a migration was to edit my local development database directly using a powerful tool like Sequel Pro, then use the Migrations plugin to generate the necessary transformations and encode them into a migration.php file for me.
This approach has some substantial advantages in my book:

It completely precludes the possibility of human error in the writing of the migration file itself-- no syntax errors and no logic errors (you've already modeled the appropriate changes in the DB directly).
It produces consistent results. Changing schema characteristics can typically done in at least a couple different ways using a tool like Phinx. (Drop a table and re-add a modified version, alter a column directly, or execute a literally SQL command, for example.) But for a given change in a schema, a program will produce the same migration commands every time.
It's quick and repeatable. While experimenting with changes to the database, a developer can build a migration, test it, and if it doesn't work they can just tweak their schema directly and immediately regenerate the corrected migration file.
No more having to remember another DSL. I appreciate Phinx's capabilities, but my clients pay me to spend my days writing the PHP that powers their business, not that transforms their DB. If a tool could produce results significantly superior to what I can do by hand, faster and more accurately, then that tool should definitely exist.

All that said, building the infrastructure to be able to compare a live DB to an existing static representation and generate migration commands from the difference is not trivial. It requires not only a way to persist a schema to disk (Cake 2 used a SchemaShell for this,) it also requires a way to encode the entire schema in-memory and compare the differences between two of those objects (ref: Cake 2's CakeSchema class).
It will also be complicated by the fact that Phinx is not exactly feature complete yet--it's not able to fully represent every possible change to a schema. (Try changing the column used as the primary key on an existing table without dropping the table or use raw SQL.) In other words, Phinx needs to grow up more itself before a migration generator is completely feasible. Implementing a generator before that time would result in "lossy" operations where a change you make to your actual schema isn't able to be reflected in the generated migration file, and thus will not persist to other installations when the migration is run by other developers or in production.
The good news is that this is a problem that others have solved before, and there is lots of "prior art" to reference. :+1:

:+1: for some diff command to generate a migration from the current changes done to DB (like propel does).

I'd love this feature too. Is it on a roadmap?

:+1:

I actually just had the idea of writing a tool that would take two mysql dumps or other forms (in first stage only with schema definitions, not data) and diff them, with a few options like "ignore changes in auto_increment column" or "don't delete columns/tables" etc. and create another SQL-File with ALTER TABLE statements. Did a quick series of searches - and since I'm already using phinx, I found this thread.
Two questions arise for me:

Did anybody start with such a thing yet, and I can join to help? If not:
What makes more sense:

2.A) a contribution to phinx to generate phinx migrations or
2.B) a standalone tool (.phar) that has phinx migrations as one possible output, the other being plain .SQL for now. This standalone tool could be wrapped by phinx.

Independently from the above choice, the phinx part could then be also about workflow -- e.g. automatically dumping a schema definition after a successful migration run to use for a comparison run in the future.
Inspiration for this is SQLyog's Schema Migration Assistant which is AFAIK only available in the enterprise edition.
My current task at work involves more than 400 MySQL tables with a lot of bad datatypes and indexes for up to 8 joins at once, where I will have to tweak it a lot by hand back and forth to find the correct data types and index definitions. I will not need every step in between, just a diff between "legacy" and "optimized".

Currently I'm working an a migration generator for phinx . It's not production ready and needs some refactoring etc. https://github.com/odan/migrations

:+1:

Currently I'm working an a migration generator for phinx . It's not production ready. https://github.com/odan/migrations

Some tool like this for PostgreSQL

I'm also interested in such tool for Postgresql

Someone just has to take the idea and implement it.
The leg work has already been done. There is a "snapshot" part available and based on that, the current migration state should be diffable. Then it just needs to generate this diff of fields, indexes and alike.


Fixes #1864 Missing environments are no longer show in solution explorer

Fixes #1864 Missing environments are no longer show in solution explorer
Switches to using IDs in a number of places in the UI so that we can support missing environments
Massively simplifies the view objects for environments in certain dialogs
Allows removing missing environments from a project

👍


Webui is broken when build

I met this question when I build webui's code in master.

package.json:  "webpack-dev-server": "^3.1.11" -> "webpack-dev-server": "3.0.0" could resolve it.


How to run template command from command prompt in server port other than 3000.

Hi everyone,
we have two different test repo directories (source code locations) for which two server ports are pointing to.
first one is with port number: 3000
the second one is with port number: 3010
we are able to run the template through Jenkins in port number:3000.
but unable to run template through Jenkins other than 3000 port number.
we got the following issue...
C:\Users\bharg\NNK_Files\OT_repo\CAPRegressionSuite\templates>opentest session create --template VerifyNewData
Error:  connect ECONNREFUSED <IP_ADDRESS>:3000
(node:5720) UnhandledPromiseRejectionWarning: Error: connect ECONNREFUSED <IP_ADDRESS>:3000
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)
(node:5720) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:5720) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Looks like it is considering 3000 as the port number.
Is there any way to handle this situation and configure the port number(other than 3000)?
Thank you

You must pass the URL of the server using the server argument:
opentest session create --template VerifyNewData --server http://localhost:3010

If you omit that argument, OpenTest will default the server URL to http://localhost:3000.

Thank you @adrianth


Adding property used by browserify (CommonJS)

Browserify (CommonJS) looks to this (main) property to realize the dependency injection via 'require'.
Ex: var webcam = require('webcam');

The change here is similar to #42 , but uses the minified file. I've decided to merge that one instead.
If you have any issues with it, let me know.


 When I was walking through, I got used to always clicking the Insert Code link when prompted, which results in adding the console output sample to the cs code.

Perhaps some dummy text could be added to those steps that don't require you to insert code?
. maybe?

@Snailedlt I agree, but that's a CodeTour thing for all code fencing.


Test on Node 10

Blocked on #1118, AFAICT.

Closed in favor of https://github.com/pump-io/pump.io/pull/1710


Fix the migration script behaviour when pr ID cannot be parsed from t…

…he project name
E.g. when project name is packit-service-hello-world-build-branch-stg

can you actually check on stg if it's already deployed?

When starting the container, alembic upgrade head fails each time, so I think there is no need for a new migration

stg looks OK now, thanks!


[Feature] Default & Reset Properties for the SearchBox

Is this request for a new component, or additional functionality for an existing component?
additional functionality for an existing component
Have you validated that your desired feature or component is not already in the backlog?
yes
Describe the component and functionality you would like to see in the starter kit

Ability to set the default value of the SearchBox  (either from a variable or hard coded).
Ability to reset the SearchBox to its default value by calling a "Reset()" or updating the variable associated with it's Default property

Describe alternatives you've considered
No current alternatives that I can think of, currently the only way to reset the control is to select & delete the text in the SearchBox
Additional context

This was addressed in the previous release. We added default value to the control but we can't have a Reset() function as the canvas components infrastructure does not have a mechanism to achieve that.


[BUG] Speech To Text feature keeps actived after deletion

Describe the bug
Even if you delete your OpenAI API Key, the feature keeps actived in the chatbot.
Screenshots

Setup

Flowise Version is up to date.

Additional context
Similar to the bug that we faced with the Starter Prompts a few weeks ago.

Edit: Apparently, you need to manually select None from the Providers field to deactivate the feature.
NOT A BUG.


Clarify loading token from file in readme

Both the password and the auth token can be read from a file by using @/path/to/passwordfile. The Readme only specifies this for the password, not for the token, even though it works for both.
This just clarifies the use with the token.

Thanks for the contribution. I must have forgotten to add this to the readme when the token authentication was added. Restructured the text a bit, please tell me if this is still fine for you.

Looks good!


Updated the JavaToolInstallerV0 task dependencies to fix CG vulnerabilities

Task name: JavaToolInstallerV0
Description:
Updated the azure-pipelines-tasks-azure-arm-rest-v2 dependency for fixing vulnerabilities:

https://github.com/advisories/GHSA-8hfj-j24r-96c4
https://github.com/advisories/GHSA-wc69-rhjr-hc9g
https://github.com/advisories/GHSA-jp4x-w63m-7wgm

Documentation changes required: N
Added unit tests: N
Attached related issue: https://github.com/microsoft/build-task-team/issues/2867
Checklist:

[x] Task version was bumped - please check instruction how to do it
[x] Checked that applied changes work as expected - ran unit tests locally, buddy-tested with windows-2022/19, ubuntu-22/20/18.04 and macos-12/11/10.15 images

Also tested on self-hosted(win10) agent on personal org.
Pipeline logs:
jtiv0_task.zip


AlphaConversion parameter renaming feature is broken

I was working on adding lazy evaluation to Nameless and I came across this:
$ python2 nameless

nameless!
Type 'quit' to exit.
> (λa.λb.a λb.b)
(λa.λb.a λb.b)
λb.λb.b

Looks like the parameter name conflict is not detected

This seems to boil down to a variable identity issue:
The problem is due to absence of parameter name conflicts checks against bound variables of the replacement in AlphaConversion of Abstraction.
It could be solved by expanding the set of unavailable names using the BoundVariables visitor, but in it, bound variables of an application are defined as so:

BV((e1 e2)) = BV(e1) ⋃ BV(e2)

This raises another problem, if any variable of e1 has the same name of a variable of e2 they are incorrectly treated as the same variable

I'm writing this for the record and for future reference after having fixed the issue.
There are two issues at play here:
The first one is mentioned in the title and it's about the parameter rename feature.
It is the easier of the two to understand, and it is the one fixed by my PR.
I proposed a partial solution to this in my previous comment:
Extending the set of unavailable names in AlphaConversion of Abstraction using the BoundVariables visitor on the replacement.
However this is not sufficient, because there is a chance that the new name chosen for the parameter conflicts with the name of the parameter of an outer abstraction.
To solve this, a set of unavailable names was added as an attribute to the AlphaConversion class, and it was used to further extend the set of unavailable names.
When a rename occurs, before recursing down the tree, the chosen new name is added to the set, so that it is marked unavailable for all further nested expressions.
What happened before is that, if by chance a new name that clashed with the name of the parameter of an outer abstraction was chosen, the resulting expression would have two or more nested abstractions with the same parameter names.
This leads to the the second issue, the one I referred to previously as "a variable identity issue", that I described here:

if any variable of e1 has the same name of a variable of e2 they are incorrectly treated as the same variable by AlphaConversion of Variable

It turned out that the issue was about distinguishing between parameter declaration and variable use rather than about variable identity (variable identity being: distinguishing between a) different variables, bound by distinct abstractions, but having the same name, and b) occurrences of the same variable bound by the same abstraction. I'm interpreting my own writing a bit here, I might have been on the wrong path, or I might have been on the right track and have used slightly misleading language).
What this means practically is that if an expression has two or more nested abstractions having parameters with the same name  (homonymous), AlphaConversion of Variable replaces both the parameter declaration and the occurrences, resulting in a rather confusing (although not illegal, as I think that the lambda character can appear in identifiers, but arguably bad) and ultimately wrong expression.
e.g.
> (λa.λa.x λb.b)
(λa.λa.x λb.b)
λλb.b.x

This second issue is actually still present and was not fixed.
I reckon that the escape route of declaring such inputs (nested abstractions with homonymous parameters) outside of the domain of the interpreter / illegal, and therefore undefined / producing undefined behavior can be used to avoid fixing it.
If the input is valid, I believe that with my fix the interpreter won't generate such incorrect expressions by itself anymore.

I'm writing this for the record and for future reference after having fixed the issue.
There are two issues at play here:
The first one is mentioned in the title and it's about the parameter rename feature.
It is the easier of the two to understand, and it is the one fixed by my PR.
I proposed a partial solution to this in my previous comment:
Extending the set of unavailable names in AlphaConversion of Abstraction using the BoundVariables visitor on the replacement.
However this is not sufficient, because there is a chance that the new name chosen for the parameter conflicts with the name of the parameter of an outer abstraction.
To solve this, a set of unavailable names was added as an attribute to the AlphaConversion class, and it was used to further extend the set of unavailable names.
When a rename occurs, before recursing down the tree, the chosen new name is added to the set, so that it is marked unavailable for all further nested expressions.
What happened before is that, if by chance a new name that clashed with the name of the parameter of an outer abstraction was chosen, the resulting expression would have two or more nested abstractions with the same parameter names.
This leads to the the second issue, the one I referred to previously as "a variable identity issue", that I described here:

if any variable of e1 has the same name of a variable of e2 they are incorrectly treated as the same variable by AlphaConversion of Variable

It turned out that the issue was about distinguishing between parameter declaration and variable use rather than about variable identity (variable identity being: distinguishing between a) different variables, bound by distinct abstractions, but having the same name, and b) occurrences of the same variable bound by the same abstraction. I'm interpreting my own writing a bit here, I might have been on the wrong path, or I might have been on the right track and have used slightly misleading language).
What this means practically is that if an expression has two or more nested abstractions having parameters with the same name  (homonymous), AlphaConversion of Variable replaces both the parameter declaration and the occurrences, resulting in a rather confusing (although not illegal, as I think that the lambda character can appear in identifiers, but arguably bad) and ultimately wrong expression.
e.g.
> (λa.λa.x λb.b)
(λa.λa.x λb.b)
λλb.b.x

This second issue is actually still present and was not fixed.
I reckon that the escape route of declaring such inputs (nested abstractions with homonymous parameters) outside of the domain of the interpreter / illegal, and therefore undefined / producing undefined behavior can be used to avoid fixing it.
If the input is valid, I believe that with my fix the interpreter won't generate such incorrect expressions by itself anymore.


'winfixbuf' should allow :edit without args

Problem
Raised by @tpope at https://github.com/tpope/vim-fugitive/issues/2272#issuecomment-2004992176 :

This option may be too aggressive. It prevents reloading the window by calling :e with no arguments. That doesn't change what buffer the window points to, but it is nonetheless blocked.

Expected behavior
'winfixbuf' should not show an error if :edit is used without args to reload the buffer (which may be application-defined for non-file buffers).
cc @ColinKennedy

True, forgot about this case. It's late my time, I can fix it soon unless someone beats me to it. I'm blanking on if there's any other commands which also use the current buffer when empty but I'll double check the full list later.


how to config memory to be used?

how to config memory to be used?

What do you mean?

set a maxmemory on how much memory to use

Mini-redis will never remove keys unless instructed to or the key expires, and having the database stored on disk is not supported, so it will use the memory it takes to store the keys it is given.


pet store rewrite

Rewritten from scratch to incorporate feedback from eng and arch.

No changes needing a change description found.

You can try these changes here

🛝 Playground
🌐 Website
📚 Next docs


Update access-cluster.md

Delete space character when get TOKEN with get/cut

@liuchong thanks for your contribution! 🎉 We really would love to have it, unfortunately to continue we need to have your (or your company's) signature on a CLA! For now I'm going to close this, but fret not! You can re-open whenever you have a chance. Thanks!

CLA signature completed 👀

/lgtm
/approve

need rebase to resolve netlify issue.

branch is rebased

reapproving
/lgtm
/approve


[Bug]: Executable path is not properly generated when using PUPPETEER_BROWSER_REVISION=stable

Minimal, reproducible example
// Set `PUPPETEER_BROWSER_REVISION` to `stable`
// export PUPPETEER_BROWSER_REVISION=stable
// Run `npm install puppeteer --save`

import puppeteer from 'puppeteer'

(async () => {
    const browser = await puppeteer.launch()
    const page = await browser.newPage()
    try {
        await page.goto('https://google.com')
        await browser.close()
    } catch (error) {
        console.log(error)
    }
    await browser.close();
})();

Error string
The executablePath uses stable while the path contains the actual browser revision.
Bug behavior

[ ] Flaky
[ ] PDF

Background
No response
Expectation
The Executable Path should be generated using the actual installed browser revision.
Reality
The executable path tries to get the stable revision and will never exist.
I was able to temporarily fix the problem using this function:
async function getExecutablePath() {
  const browsers = await getInstalledBrowsers({
    cacheDir: process.env.PUPPETEER_CACHE_DIR || '',
  });

  if (browsers.length === 0) {
    throw new Error('Could not find a browser to launch');
  }

  const browser = browsers[browsers.length - 1];
  return browser.executablePath;
}

Puppeteer configuration file (if used)
No response
Puppeteer version
21.10.0
Node version
20.11.0
Package manager
npm
Package manager version
10.2.4
Operating system
Windows

@alexandcote stable is not a proper browser revision/version. Puppeteer expects a specific revision, not an alias. Previously, revisions were numeric and nowadays they are version numbers. Puppeteer also expects the user to install the revision that is requested:
npx puppeteer browsers install<EMAIL_ADDRESS>npx puppeteer browsers install<EMAIL_ADDRESS>export PUPPETEER_BROWSER_REVISION=119.0.6045.105
# now any launch function will use 119.0.6045.105 if nothing else is provided via launch arguments

Also, if you need the stable version, we recommend using the version bundled with Puppeteer. Resolving aliases at launch time is unfortunately not very reliable so it is out of scope for Puppeteer for now.

The weird part is if you only specify PUPPETEER_BROWSER_REVISION=stable the stable version is installed properly but the executablePath is not generated properly. While you can do npx puppeteer browsers install chrome@stable I believe 🤔

I understand thanks for the context 👍🏻 😄
Do you see any value in adding a feature to allow consumers to always use the last stable version?
I'm proposing this because when a security issue happens in Chrome, consumers have to wait for a Puppeteer update and update the consumer service (in our case in many different services).
Alternatively, we could install Chrome manually and skip the installation during Puppeteer installation. This required more setup.
What I'm proposing is if PUPPETEER_BROWSER_REVISION=stable|latest|beta is used, Puppeteer install the browser like it does today in: <CACHE>/chrome/<DISTRO>-<REVISION> but create a symlink so <CACHE>/chrome/<DISTRO>-<stable|latest|beta> point to the installed revision. This will allow the executable path to work properly and will require consumers to only set the PUPPETEER_BROWSER_REVISION to use the stable version.
What do you think 😄 ?

Good suggestion, I would probably go in the direction of adding metadata to the browser folders though.


SQL^2 pretty-printer fixes

Fixes pretty printing for complex identifiers and unshift operations so that they emit valid SQL^2. This was causing view mounts that used these features to become corrupted when saved as we use the pretty printer to serialize the view query.
I also updated ExprArbitrary to emit complex identifiers and additional operations so the generated expressions better represent the range of possible expressions.
Fixes #1845.
Fixes #1855.

@alissapajer What do you think about removing the catch-all case in the pretty printer for unary and binary operations in favor of enumerating all of them so that this sort of thing doesn't happen in the future (as we'd benefit from exhaustiveness checking in the compiler). It'd be at the cost of some duplication, but I'm not sure how else to prevent this sort of thing other than constant vigilance in future code reviews.

@wemrysi since our pretty printers are actually being used to serialize queries (and not just to make a query print nicely) then I think it makes sense to enumerate all the operations so we can be sure to do the right thing on a case by case basis. I agree that constant vigilance in the future isn't really an option.
Since this PR should land ASAP in 4.1 release, I think enumerating all the operations can be done in a separate PR.

Also, I wonder if we should rename the pretty printers from pprint to printSerializable or something like that?
When I see a pretty printer, I assume its output is just meant for human eyes and will never be fed into another machine process. Though maybe my assumptions are wrong? :)

Or maybe we should be serializing using some other mechanism? The pretty printer is used as we only have the parsed expression tree in memory, we could, instead, hold onto the original query provided by the user and then serialize it verbatim (assuming it parsed), eliminating reliance on the pretty printer.
We didn't want to serialize the expression tree in order to remain closed to changes in its representation.

Eliminating reliance on the pretty printer actually sounds even better. Then we're not required to print something that will serialize. If we can just keep the original query and serialize that, then we're removing an entire step in the serialization process, which would be an improvement.

So, to me, pprint is the dual to parse (like Show is supposed to be the dual to Read, not that Scalaz has a Read type class). But … there are a few things to consider

we can formalize this relationship (and eliminate the dual implementations of the parser and pretty-printer) using invertible syntax, which we should move to at some point and
once we have position info (which invertible syntax will also give us), pretty-printing will be used less. Right now, any errors need to be pprinted from the AST, but with position info, we’d just substring the original query (and, of course, that also allows us to report errors better even after we’ve gotten to some deeper representation like QScript or whatever).

@wemrysi once the build is green, good to go for merge for 4.1. Then we can figure out the other parsing/printing stuff separately.

@sellout even if we unify parse and print with invertible syntax, do you agree it would still make sense to just serialize the original query, rather than pretty print it first and then serialize that? Is there a reason we weren't doing that before?

I’m not sure what you mean … if by “original query” you mean the String, then it’s already serialized. If you mean the AST, then pprint is the serializer. If you mean Serializable – I hope there’s nowhere we’re actually serializing any representation of SQL².
The reason we currently can’t just print the original query string is that for an error we want to print the part of the string that was wrong, like select 3 + "s" from zips => “mismatched types in 3 + "s".” To do that we either need to pprint the portion of the AST that’s incorrect as we currently do, or have access to position information from parsing (which we’d like to do).
NB: I keep talking about “substring”, but we’d probably do something more like scalac to maintain context, like
error: mismatched types in operation
error: select 3 + "s" from zips
error:        |_____|

but that’s too much to write out every time.

@sellout ah ok that makes perfect sense - I meant the "original query" and was missing the important part where we are printing "substrings" of that query, which come to us (currently) in AST form.

Oh, sorry – I see my confusion. I missed the part about this being for view mounts. Yes, we should be maintaining the original query string in view mounts. They used to be there, but they were eliminated because it seemed redundant to hold both the SQL string and the SQL AST in the mount. However, the mount really should never have had the SQL AST in it at all.
The view mount needs to have 1. the QScript AST (but the best we can do is the LP AST until old Mongo is truly gone), 2. the original query string (only so a user can edit the mount), and 3. ideally some way to indicate the frontend to be used to convert that string into LP (currently we only have SQL², so this can be postponed until we actually add another frontend).
Holding the SQL AST in the view mount has a few problems – 1. it means a user trying to edit the view might see a different query than they originally wrote (since we pprint it), 2. we don’t get SQL->LP->QS errors at the time the view mount is created, but rather when it’s used, and 3. once we have other frontends, we’ll have no way to get to a SQL AST from those frontends.

So yeah, a “simple” first step would just be adding the query string to the view mount, and not pprinting anywhere in that code. Then next we can replace SQL AST with QScript AST (once old Mongo is gone). And finally, abstract over the parser, so views can be written using an arbitrary frontend syntax.

To summarize: since the view mount currently requires a SQL AST in order to be created, any SQL parse errors will prevent the view mount from successfully being created, and those parse errors will be reported using the pretty printer on a subset of the SQL AST. But once we have a view mount, we also have a valid SQL AST. And the problem being fixed here lay in the fact that reverting the entire SQL AST back to a String using pretty print was creating invalid SQL^2.
@sellout does that all sound right?

@wemrysi looks like there are conflicts now :(

Current coverage is 65.32% (diff: 100%)

No coverage report found for master at b7b0d43.

Powered by Codecov. Last update b7b0d43...bef6a4f


Short solution needed: "golang switch" (golang)

Please help us write most modern and shortest code solution for this issue:
golang switch (technology: golang)
Fast way
Just write the code solution in the comments.
Prefered way

Create pull request with a new code file inside inbox folder.
Don't forget to use comments explain solution.
Link to this issue in comments of pull request.

How to implement switch


Small fixes...

Silence a policy
Simplify CUDA+OpenMP smoke test (#296 #297) and moves the current smoke test to a properly guarded internal test

@white238 when do you plan to merge this?


update access for GH OIDC

we are switching from using a service user in GH action to
using a OIDC provider thus we need to provide the OIDC
role equivalent access as the service user role.

woops, good catch


Can I use it with DiffUtill?

hi @QiLiKing ,
Have you worked with DiffUtil?

Closing this as this library is deprecated: https://github.com/thoughtbot/expandable-recycler-view/pull/235


Module not working with Elasticsearch 5.4

Module version: latest release
Puppet version: latest release
OS and version: Centos 7

Bug description
I am using the module with a 3 node cluster with one instance each node. We tried to upgrade to the 5.4 release of ES on our test-cluster and got the following error:
[2017-05-09T15:55:33,920][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [es-01] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: unknown setting [default.path.home] did you mean any of [default.path.conf, default.path.logs]?
which is connected to the breaking change: https://www.elastic.co/guide/en/elasticsearch/reference/5.4/breaking-changes-5.4.html
Is there any option to edit the startup options of the Systemd file created by the selfwritten provider? If there is, I simply need some input, I am stuck here.

Are you sure you're on the newest version of this module? This commit seems to address issue you mention and I have no problems using 5.4 with it. https://github.com/elastic/puppet-elasticsearch/commit/e50d793956b7214aaf8d550ccfa52beacad3b77f

5.4.0 is currently passing acceptance tests in Travis, and a manual test I just ran looks good:
[root@centos-7-x64 ~]# jq '.version' /etc/puppetlabs/code/modules/elasticsearch/metadata.json
"5.2.0"
[root@centos-7-x64 ~]# puppet --version
4.10.0
[root@centos-7-x64 ~]# cat test.pp
class { 'elasticsearch':
        java_install => true,
        manage_repo => true,
        repo_version => '5.x',
}
elasticsearch::instance { 'es-01' : }
[root@centos-7-x64 ~]# systemctl is-active elasticsearch-es-01
active
[root@centos-7-x64 ~]# curl localhost:9200 | jq '.version'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   338  100   338    0     0  15900      0 --:--:-- --:--:-- --:--:-- 16900
{
  "number": "5.4.0",
  "build_hash": "780f8c4",
  "build_date": "2017-04-28T17:43:27.229Z",
  "build_snapshot": false,
  "lucene_version": "6.5.0"
}
[root@centos-7-x64 ~]#

Like @shoggeh mentioned, you'll need to make sure you're on at least module version 5.2.0.

It works. Thx!


Add support ESPHome BLE active adapter

Select Add-On (place a lowercase x for the relevant add-on)

[x] Xiaomi Mi Scale

Is your feature request related to a problem? Please describe.
Hi!
I have a problem and I couldn't find any information about it. I have an XMTZC02HM scale and an ESPHome BLE (active) bluetooth connection.
I would like to set this adapter in the integration, but unfortunately I can't do it.
Does it only work with a physically connected adapter? Or in what format should I enter the path?
Thank you in advance for your answer!

Hi,
The add-on only works with physical Bluetooth Adapters.
If you want to use an ESP device, try https://www.esphome.io/components/sensor/xiaomi_miscale.html

Hi,
The add-on only works with physical Bluetooth Adapters.
If you want to use an ESP device, try https://www.esphome.io/components/sensor/xiaomi_miscale.html


Add windows support

Hi!
This PR adds Windows support. I was a bit surprised that this actually worked, but thanks to rtmidi and py_audio, your software was really easy to adapt.
After applying these patches, it should still work with OS X and Linux as it did before, but please test that to be sure.
The commit comments explain what every change is. Please let me know if you have any questions.
Thanks for this fun program!

Woo! Travis likes it!

This pull request was extremely well written. It is an excellent job and I can attest that it is working fine right now in my Windows machine.
The numpy upgrade is necessary because this newer version is easy to install on Windows, while the older one was a nightmare.
+1 for merging this.
(Maybe I should mention that my branch "nando" has this merged with latest master, but actually it is very easy for you to merge directly.)
And yes, thanks for sharing a VERY useful program!

By the way, it still works just fine in Linux, too.


Performance bug: runs 3x faster if a call to blake3_hasher_update is broken into two calls

I've extracted a minimal test case reproducing a very strange performance cliff in my application - strange because it can be worked around in a way that suggests that the buffering algorithm in blake3_hasher_update isn't working properly.
I'm using the C port in my app, I haven't had a chance to try and get the Rust version going and see if it has the same issue, but from reading the two the buffering algorithm looks the same to me.
To produce the problem, we need to start out by hashing something small, eg. a size_t integer (in my real application this would be the length of the following string).  Then follow with a big buffer.
It's not surprising that this would be measurably slower than just hashing the big buffer without the integer first, since it requires retaining a partial block of data.  What is strange is that the entire operation on the big buffer is much slower, not just the hashing of the first full block of data.
And even stranger, you can restore back essentially full performance by breaking the blake3_hasher_update call for the big block of data into two, on the boundary of 4096 bytes minus however many bytes you've already hashed.  (Yes, 4096 - not BLAKE3_CHUNK_LEN, 1024, like any sensible bug would have chosen.)
In fact making more calls to blake3_hasher_update makes the whole thing 3x faster even though the same data is processed in the end.  Obviously, if this is really expected, we should be doing that inside blake3_hasher_update.
Code to reproduce:
#include "blake3.h"
#include <stdlib.h>
#include <strings.h>
#include <stdio.h>
#include <time.h>

int main() {
  blake3_hasher hasher;
  uint8_t output[BLAKE3_OUT_LEN];
  size_t reps = 1000; // arbitrary

  size_t small_value = 0;
  size_t buf_size = 1024*1024; // 1mb; fairly arbitrary, 256kb gives the same result, as does 1024*1024 - sizeof(size_t)
  unsigned char *buf = malloc(buf_size);
  bzero(buf, buf_size);

  // variant 1: hash a size_t, then hash the remainder of the 1mb buffer
  clock_t start1 = clock();
  for (int rep = 0; rep < reps; rep++) {
    blake3_hasher_init(&hasher);
    blake3_hasher_update(&hasher, &small_value, sizeof(small_value));
    blake3_hasher_update(&hasher, buf, buf_size);
    blake3_hasher_finalize(&hasher, output, BLAKE3_OUT_LEN);
  }
  clock_t end1 = clock();
  printf("variant 1 ran in %f, hash ", ((float)(end1 - start1))/CLOCKS_PER_SEC);
  for (size_t i = 0; i < BLAKE3_OUT_LEN; i++) {
    printf("%02x", output[i]);
  }
  printf("\n");

  // variant 2: hash a size_t, then hash 4k minus the size of a size_t, then hash the remainder of the 1mb buffer
  clock_t start2 = clock();
  for (int rep = 0; rep < reps; rep++) {
    blake3_hasher_init(&hasher);
    blake3_hasher_update(&hasher, &small_value, sizeof(small_value));
    size_t magic_amount_to_update = 4096 - sizeof(small_value); // <-- 4096 is the magic number; 1024 (BLAKE3_CHUNK_LEN) does not produce a significant speedup; 2048 produces a partial speedup
    blake3_hasher_update(&hasher, buf, magic_amount_to_update); // <-- new line
    blake3_hasher_update(&hasher, buf + magic_amount_to_update, buf_size - magic_amount_to_update); // <-- remainder of the full buffer
    blake3_hasher_finalize(&hasher, output, BLAKE3_OUT_LEN);
  }
  clock_t end2 = clock();
  printf("variant 2 ran in %f, hash ", ((float)(end2 - start2))/CLOCKS_PER_SEC);
  for (size_t i = 0; i < BLAKE3_OUT_LEN; i++) {
    printf("%02x", output[i]);
  }
  printf("\n");

  return 0;
}

On my Macbook Pro I get:
variant 1 ran in 0.946282, hash 80b378d1f0bc7ee2e9c96dc30108187a03779c8dfd951047bf6c99ce88be2ff6
variant 2 ran in 0.302671, hash 80b378d1f0bc7ee2e9c96dc30108187a03779c8dfd951047bf6c99ce88be2ff6

I'm very glad you caught this, and thank you for the extremely thorough repro. The problem is caused by the optimization described in this comment:
// Shrink the subtree_len until *half of it* it evenly divides the count so
// far. Why half? Because compress_subtree_to_parent_node will return a
// pair of chaining values, each representing half of the input. As long as
// those evenly divide the input so far, we're good.

That comment is correct as far as it goes. If we've hashed say 1 chunk so far, and then you call update with 2 chunks, processing that whole 2-chunk input with a single call to compress_subtree_to_parent_node gives the correct result (and the performance benefits of 2-way SIMD), because that function is going to return the two separate chaining values that comprise a "parent node", and each of those two chaining values gets merged into the tree state separately. However, if that function returned a single chaining value instead, that would lead to an incorrect result, because it's supposed to be chunks #0 and #1 that are siblings in the tree, not chunks #1 and #2. Likewise, calling it with 4 chunks in this situation would be incorrect.
What I didn't realize at the time, and what you've discovered, is that that "optimization" gets the update loop stuck in a bad state.  The total number of chunks so far will remain odd, and the "half of it evenly divides the count so far" rule will always give the answer 2. What we should be doing instead is 1, 2, 4, 8, ..., so that the total number of chunks becomes divisible by larger powers of 2, and we can compress larger subtrees with higher degrees of parallelism.
The fix is going to be simple. We should just stop halving the subtree length in that part of the update loop:
diff --git a/c/blake3.c b/c/blake3.c
index b4a5992..d28b7f3 100644
--- a/c/blake3.c
+++ b/c/blake3.c
@@ -495,7 +495,7 @@ void blake3_hasher_update(blake3_hasher *self, const void *input,
     // consistently passes power-of-2 inputs of the same size, as is hopefully
     // typical, this loop condition will always fail, and subtree_len will
     // always be the full length of the input.)
-    while ((((uint64_t)((subtree_len / 2) - 1)) & count_so_far) != 0) {
+    while ((((uint64_t)(subtree_len - 1)) & count_so_far) != 0) {
       subtree_len /= 2;
     }
     // The shrunken subtree_len might now be 1 chunk long. If so, hash that one

I haven't measured the Rust code yet, but it uses the same strategy, and I'm pretty sure it has the same problem. I'll have the fix for both out shortly. Again, so glad you caught this.

Awesome thanks for your work on this library @oconnor663, can confirm my microbenchmarks perform great now.


Add possibility to set codeFormat to year, month, day, hour and minute

It would be great if it was possible to set codeFormat to year, month, day, hour or minute. I would prefer an autoincremental versionCode instead of a one based on git commits.

Good idea. By time of last commit?

No, rather the current time when I exported the APK.
The reasoning is that I might upload "betas" (dirty/amended commits) to Google Play Developer Console. Thus if only using version or commit count (B) the versionCode would never increment but Google Play Developer Console would still want me to increase the versionCode.
If we used the exported date I would always have a "new" versionCode number.
Tried to add it myself but I didn't understand how to use my local compiled version of your plugin :-)

Well...a couple things give me pause:

I think it is generally safer to push releases from commits, so you always have a record of what is in the playstore.
I also think in general that "build time" doesn't tell you as much as "last commit". If I build from the same bits, I should get the same result...no snowflakes!.
The number of digits available in the versionCode is not sufficient to store a full date stamp unless you toss most or all of the version number ... in which case this plugin probably isn't going to help a ton.

That said, I'm not trying to dictate your build pipeline -- it's yours to decide!
So: I created an X code and pushed this into 0.3.1. This just leaves a 0 which you can fill as you wish by amending baseCode. Sound good?

I agree it's safer to push from commits. But let's say I have SW in the beta tab in Google Play Developer Console. Then creating new commits per upload just to step the versionCode (and you need to step the versionCode each time a APK is uploaded) doesn't feel right because perhaps I just want to amend the previous commit. I.e. if I just keep amending based on the comments from my beta testers the versionCode doesn't get increased.
So I want to have some kind of auto increment to be able to push amended commits to the beta section in GPDC.
Any ideas about this?

YMMV, but in my experience a build that other people see deserves its own commit. In the future looking back to see the changes for each beta iteration could have some value. For example, you could change your mind and revert on a single commit. You can't do that if the commit has lots of changes rolled up into it.
But if amending is your workflow, you can also keep adding tags to the same commit to set the version name/code you want to expose. The plugin will always take the latest one, so if a commit has 1.2.345 and 1.2.346 it will take 1.2.346 for the name and code. This would give you the advantage of asking a beta user which one they were on, and you could at least tell they weren't on the latest!
And with the X digit in baseCode you can also try inserting your own clock-based designator into the baseCode if that's what you want to do.
Good luck!

OK thank you for your input and the change you did for me!
/ Henrik


Karabiner breaks non-Apple keyboard

Hi there,
I have both keyboards, one mechanic non-Apple keyboard and another one Apple keyboard.
For Apple keyboard, I remapping caps-lock to escape and thing is fine.
For non-Apple keyboard, I remapping caps-lock to escape and swap option-command key in setup modifier key from Keyboard setting but it doesn't work.
If I quit Karabiner, setup modifier key from Keyboard work, otherwise, it doesn't work. it means modifier keyboard from Apple and Karabiner can not work together. The way it works totally difference with Seil.
Is it a feature or an issue? I just updated to macOS Sierra and Seil doesn't work on Sierra, that's  reason why I came to Karabiner

As far as I can tell, Karabiner should only touch to modifier key with "No Action" value, currently it changed every modifier keys even the key with "real" value

I'm seeing a similar effect. With an external USB keyboard the caps_lock to escape does not work at all on the USB keyboard.

I'm seeing an issue where clicking '<' on my usb keyboard produces '§' instead.
I've also noticed that the apple keyboard configuration cannot properly figure out which keyboard I own, since it thinks I'm clicking the native keyboard if I have Karabiner turned on.

Same here - my suggestion:

have different Karabiner configs for different keyboards
** no config for a specific keyboard

If you look at the MacOS modifier options for function keys - you can select it by individual keyboard. For me I remapped an external keyboard to get the same "haptic" as on the onboard Apple keyboard, of course then I always have to activate Karabiner or deactivate.
Choosing between differnt Keyboards and deciding if All should use the default config - OR - just specific keyboards use a config - OR - each keyboard get's its own config.

I'm having the same issue. I've swapped command and option for the external keyboard only but it doesn't work. When I quit Karabiner Elements, it does. And I only want them swapped when an external keyboard is attached.

Perhaps this is relevant?
https://github.com/tekezo/Karabiner-Elements/issues/9#issuecomment-248498163
In the new Karabiner-Elements, you can no longer user OS Preferences to remap the keyboard.  Instead, do ALL remapping in Karabiner-Elements.

From my perspective it shouldn't ...
For the time being, I created my own profile for internal keyboard (Mac), external keyboard (which has Windows layout) and it can quickly switch by CLI, but I hope it would be there for temporarily and author will change his mind ;) .

You can ignore specific devices in Devices tab since Karabiner-Elements 0.90.57.

awesome - thanks !

But what should I use to be able to use non apple keyboard.
Right now I'm on DasKeyboard and iMac (don't have apple keyboard at all)
And after installing karabiner elements all by keys changes to default macs keyboard.
Default OSX keys remap also ignoring.

If Karabiner Elements is started, the OSX key remaps are ignored.
You have to do the remapping then in Karabiner completely.
IMHO OS Sierra brought out an update which supports already a lot of stuff - see if you can remap it there.

@poberherr OMG really. they added Esc to modifiers keys and I'm able to modify caps lock to esc in OS.
I spent more than a month waiting for Karabiner for this.
Thank you very much !  :)


Fix swazzler branching workflow

Goal

Testing

Release Notes

WHAT:
WHY:
WHO:

#795  👈
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @bidetofevil and the rest of your teammates on  Graphite


chore: import repository https://github.com/lucaiacono2275/jx3-kubernetes-vault-3.git

this commit will trigger a pipeline to generate the CI/CD configuration which will create a second commit on this Pull Request before it auto merges

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To complete the pull request process, please assign
You can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@lucaiacono2275: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

verify
af70e3c14f0d0ffc93d89b2d815c3248d08f38d7
link
/test verify

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the jenkins-x/lighthouse repository. I understand the commands that are listed here.


Can not update firewall rules via CLI

Describe the bug
Command Name
az postgres server update
Errors:
BadRequestError: Invalid Public Network Access Value

To Reproduce:

az postgres server update --resource-group my-rg --name my-psql --public <IP_ADDRESS>

Expected Behavior
The documentation from az postgres server update --help clearly states that a <SingleIP> is valid, however the command does not accept it:
    --public --public-network-access : Enable or disable public network access to server. When
                                       disabled, only connections made through Private Links can
                                       reach this server. Allowed values are : Enabled, Disabled,
                                       all, <IP_ADDRESS>, <SingleIP>, <StartIP-DestinationIP>. Default is
                                       Enabled.

It is expected that running the command would add a new firewall rule, such as below when using the portal:

Environment Summary
Linux-5.4.75-1-MANJARO-x86_64-with-glibc2.2.5
Python 3.8.6
Installer:

azure-cli 2.14.2

Additional Context
The expected behaviour is contradicted by the official azure-cli documentation, which does not say that <SingleIP> is an accepted value, although there are two extraneous commas that suggest perhaps these values are intended to be there, but missing:

--public --public-network-access
Enable or disable public network access to server. When disabled, only connections made through Private Links can reach this server. Allowed values are : Enabled, Disabled, all, <IP_ADDRESS>, , . Default is Enabled.

postgres

Hello, Thanks for pointing that issue. We will look into updating it. For creating/updating firewall rules, please refer to https://docs.microsoft.com/azure/postgresql/howto-manage-firewall-using-cli.

This confussion was created by PR #15538, which overloaded the --public-network-access  parameter to also create firewall rules under the covers, but it was only implemented for the create subcommand.
Unfortunately, help text for that parameter is common for create and update subcommands, hence the confussion.
To create or delete firewall rules for existing servers, don't use the update subcommand of the server command, but use the firewall-rule create/delete/update subcommands instead.
@yonzhan Please, close this issue.


activeEditorIsPinned is not set when editor is auto-pinned by workbench.action.moveEditorLeftInGroup

Type: Bug
workbench.action.moveEditorLeftInGroup will automatically pin an editor if the editor to its left is pinned. When this happens activeEditorIsPinned is not updated and set to true. This context is only set when explicitly using workbench.action.pinEditor.
The reverse scenario has the same bug. Moving and editor to the right will unpin it if the editor to the right is unpinned. This will not set activeEditorIsPinned to false.
VS Code version: Code - Insiders 1.76.0-insider (c7930ca55d072608625ba76c13b5f9baaf9a2136, 2023-02-10T16:22:19.445Z)
OS version: Windows_NT x64 10.0.19045
Modes:
Sandboxed: Yes

System Info

Item
Value

CPUs
AMD Ryzen 9 5950X 16-Core Processor             (32 x 3400)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: disabled_off

Load (avg)
undefined

Memory (System)
31.92GB (18.73GB free)

Process Argv
--crash-reporter-id 22cf4e37-a96e-4ad9-82f0-8715f8e2bf6e

Screen Reader
no

VM
0%

Extensions: none
A/B Experiments
vsliv695:30137379
vsins829:30139715
vsliv368cf:30146710
vsreu685:30147344
python383:30185418
vspor879:30202332
vspor708:30202333
vspor363:30204092
vslsvsres303:30308271
pythonvspyl392:30422396
pythontb:30258533
pythonptprofiler:30281269
vsdfh931cf:30280410
vshan820:30294714
pythondataviewer:30285072
vscod805cf:30301675
bridge0708:30335490
bridge0723:30353136
cmake_vspar411:30581797
vsaa593cf:30376535
pythonvs932:30404738
cppdebug:30492333
vsclangdf:30492506
c4g48928:30535728
dsvsc012cf:30540253
pynewext54:30618038
pylantcb52:30590116
pyindex848:30611229
nodejswelcome1:30587009
pyind779:30611226
pythonsymbol12:30651887
2i9eh265:30646982
showlangstatbar:30659908
pythonb192cf:30661257

Open for help, investigation, suggested fixes, PR.

What a great catch 👏 . I am especially surprised that this has gone unnoticed for such a long time. We literally miss the related model event when moving an editor changes pinned state 😱 .

This bug has been fixed in the latest release of VS Code Insiders!
@akbyrd, you can help us out by commenting /verified if things are now working as expected.
If things still don't seem right, please ensure you're on version 96a795cc0b1cd62f9ff66c347637f917c6dde3da of Insiders (today's or later - you can use Help: About in the command palette to check), and leave a comment letting us know what isn't working as expected.
Happy Coding!

/verified on 96a795cc0b1cd62f9ff66c347637f917c6dde3da