Datetype for mysql

When you try to pass JS date like new Date().toString(), or new Date().toISOString() to datetime field it won't you need to create new compatible with mysql date string new Date().toISOString().slice(0, 19).replace('T', ' '), or you need to re-config your sql service what I don't want to do. It would be useful if this module will do it for you.

The database adapters do not do any automated type conversion since it can always be done in a small hook like this:
function convertDate(fieldName) {
  return function(hook) {
    const prop = hook.data && hook.data[fieldName];

    if(prop) {
      hook.data[fieldName] = Date().toISOString().slice(0, 19).replace('T', ' ');
    }

    return Promise.resolve(hook);
  }
}

Which can then be used like
app.service('myservice').hooks({
  before: {
    create: [
      convertDate('birthdate')
    ]
  }
});

Thanks for quick answer. I already use hook, but thought that it can be useful to do it in the adapter.
But I got it what you are saying it makes sense.


SEO for web

Is the Web version optimized for SEO?

Not currently. If we ever want to implement it, we will most likely need to perform some kind of server-side rendering.

Not currently. If we ever want to implement it, we will most likely need to perform some kind of server-side rendering.


[java] implement java beans approach for all supported options

Now that we agreed on the Java Beans approach from #106, here is the code rebased to master. Let's focus on implementation issues.

With methods. I had a really difficult time merging these to use enums, so I removed them for the initial discussion of this PR. We can add them back before merging this PR if that makes sense to do. I'd like to agree on the rest of this implementation first.

What do we think of namespacing all of the Sauce Options into Options? e.g. Options.Browser.EDGE and Options.Platform.WINDOWS_10 instead of Browser.EDGE and Platform.WINDOWS_10?  I liked that it wouldn't get confusing with any of the Selenium enums since Sauce has more specific requirements, and I was thinking that would make it more obvious to end users what goes there, but I don't know if that is Java idiomatic and that class is rather unwieldy.

EDIT: Decided to remove Options, but renamed Platform to SaucePlatform so it won't conflict with Selenium's Platform enum.

Enums. Each enum comes with a lookup table so we can access either the key or the value as needed. For consistency all getters on the enum are now getValue() instead of having custom ones like getEndpoint() or getPlatformName(), etc. toString() is overridden so we don't need to call the getValue() at all when interpolating.

There are 35 options we are supporting. The field names are intended to match the key values in our documentation exactly. The exceptions are public which is a reserved keyword, so I've implemented it as jobVisibility, and I've added prerunURL since prerun can take both a Map of various values or just a String (that represents a "URL").

This PR uses lombok to remove boilerplate setters and getters. The getters are very straightforward and leverage reflection to handle accessing all 35 fields in toCapabilities() with only  31 lines of code.

EDIT: I re-implemented this without reflection since I realized we already had an enum of allowed values, and the extra magic was thereore unnecessary.

Because 7 of the 35 options have enum type, however, which means they can not be automatically set from serialized input. I have 70 lines of code and conditionals to automatically deal with these edge cases.

A more obvious implementation would be to not use lombok or reflection and just hard code getters and setters for each of the 35 fields. This would obviously result in a lot more code, but it would let us store everything in a HashMap, which would make toCapabilities() more straightforward. One potential problem with this approach is that it is impossible to have a method that takes an enum object and a String object inside of a Hash. I made an attempt to do this to see if it would work, and I couldn't figure it out. Erasure is complicated.

EDIT I think the new implementation that removes reflection is both sufficiently clear such as to make any hard coding unnecessary.

EDIT New feature - can now access timeouts with options.timeout.setImplicitWait instead of options.setTimeouts(timeoutMap)

Example use case of the enum conversions:
// The idea is to be able to import a JSON/YAML/Properties file, iterate on it to pull out key value pairs
// but this will show the functionality
Map map = new HashMap;
map.put("browserName", "firefox");
map.put("platformName", "macOS 10.13");

SauceOptions sauceOptions = new SauceOptions();
sauceOptions.setCapabilities(map)

// setCapabilities() is taking these String values and converting them to the appropriate enum type
assertEquals(Options.Browser.FIREFOX, options.getBrowserName());
assertEquals(Options.Platform.MAC_HIGH_SIERRA, options.getPlatformName());

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2
- Added 9

Complexity increasing per file
==============================
- java/src/main/java/com/saucelabs/simplesauce/Options.java  1
- java/src/main/java/com/saucelabs/simplesauce/SauceOptions.java  8
- java/src/main/java/com/saucelabs/simplesauce/InvalidSauceOptionsArguementException.java  1

Clones added
============
- java/src/test/java/com/saucelabs/simplesauce/SauceOptionsTest.java  2

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2
- Added 9

Complexity increasing per file
==============================
- java/src/main/java/com/saucelabs/simplesauce/InvalidSauceOptionsArguementException.java  1
- java/src/main/java/com/saucelabs/simplesauce/Options.java  1
- java/src/main/java/com/saucelabs/simplesauce/SauceOptions.java  8

Clones added
============
- java/src/test/java/com/saucelabs/simplesauce/SauceOptionsTest.java  2

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2
- Added 4

Complexity increasing per file
==============================
- java/src/main/java/com/saucelabs/simplesauce/Options.java  1
- java/src/main/java/com/saucelabs/simplesauce/SauceOptions.java  8
- java/src/main/java/com/saucelabs/simplesauce/InvalidSauceOptionsArguementException.java  1

Clones added
============
- java/src/test/java/com/saucelabs/simplesauce/SauceOptionsTest.java  2

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2

Complexity increasing per file
==============================
- java/src/main/java/com/saucelabs/simplesauce/Options.java  1
- java/src/main/java/com/saucelabs/simplesauce/InvalidSauceOptionsArguementException.java  1
- java/src/main/java/com/saucelabs/simplesauce/SauceOptions.java  8

Clones added
============
- java/src/test/java/com/saucelabs/simplesauce/SauceOptionsTest.java  2

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2

Complexity increasing per file
==============================
- java/src/main/java/com/saucelabs/simplesauce/SauceOptions.java  8
- java/src/main/java/com/saucelabs/simplesauce/InvalidSauceOptionsArguementException.java  1
- java/src/main/java/com/saucelabs/simplesauce/Options.java  1

Clones added
============
- java/src/test/java/com/saucelabs/simplesauce/SauceOptionsTest.java  2

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2

Complexity increasing per file
==============================
- java/src/main/java/com/saucelabs/simplesauce/Options.java  1
- java/src/main/java/com/saucelabs/simplesauce/SauceOptions.java  8
- java/src/main/java/com/saucelabs/simplesauce/InvalidSauceOptionsArgumentException.java  1

Clones added
============
- java/src/test/java/com/saucelabs/simplesauce/SauceOptionsTest.java  2

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2

Complexity increasing per file
==============================
- java/src/main/java/com/saucelabs/simplesauce/Browser.java  1
- java/src/main/java/com/saucelabs/simplesauce/Prerun.java  1
- java/src/main/java/com/saucelabs/simplesauce/SauceOptions.java  8
- java/src/main/java/com/saucelabs/simplesauce/PageLoadStrategy.java  1
- java/src/main/java/com/saucelabs/simplesauce/Timeouts.java  1
- java/src/main/java/com/saucelabs/simplesauce/JobVisibility.java  1
- java/src/main/java/com/saucelabs/simplesauce/SaucePlatform.java  1
- java/src/main/java/com/saucelabs/simplesauce/UnhandledPromptBehavior.java  1
- java/src/main/java/com/saucelabs/simplesauce/InvalidSauceOptionsArgumentException.java  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2

Complexity increasing per file
==============================
- java/src/main/java/com/saucelabs/simplesauce/UnhandledPromptBehavior.java  1
- java/src/main/java/com/saucelabs/simplesauce/Timeouts.java  1
- java/src/main/java/com/saucelabs/simplesauce/InvalidSauceOptionsArgumentException.java  1
- java/src/main/java/com/saucelabs/simplesauce/PageLoadStrategy.java  1
- java/src/main/java/com/saucelabs/simplesauce/SaucePlatform.java  1
- java/src/main/java/com/saucelabs/simplesauce/Browser.java  1
- java/src/main/java/com/saucelabs/simplesauce/JobVisibility.java  1
- java/src/main/java/com/saucelabs/simplesauce/TimeoutStore.java  4
- java/src/main/java/com/saucelabs/simplesauce/SauceOptions.java  8
- java/src/main/java/com/saucelabs/simplesauce/Prerun.java  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2

Complexity increasing per file
==============================
- java/src/main/java/com/saucelabs/simplesauce/Prerun.java  1
- java/src/main/java/com/saucelabs/simplesauce/Timeouts.java  1
- java/src/main/java/com/saucelabs/simplesauce/InvalidSauceOptionsArgumentException.java  1
- java/src/main/java/com/saucelabs/simplesauce/UnhandledPromptBehavior.java  1
- java/src/main/java/com/saucelabs/simplesauce/TimeoutStore.java  4
- java/src/main/java/com/saucelabs/simplesauce/Browser.java  1
- java/src/main/java/com/saucelabs/simplesauce/JobVisibility.java  1
- java/src/main/java/com/saucelabs/simplesauce/SaucePlatform.java  1
- java/src/main/java/com/saucelabs/simplesauce/SauceOptions.java  8
- java/src/main/java/com/saucelabs/simplesauce/PageLoadStrategy.java  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2

Complexity increasing per file
==============================
- java/src/main/java/com/saucelabs/simplesauce/UnhandledPromptBehavior.java  1
- java/src/main/java/com/saucelabs/simplesauce/JobVisibility.java  1
- java/src/main/java/com/saucelabs/simplesauce/Browser.java  1
- java/src/main/java/com/saucelabs/simplesauce/PageLoadStrategy.java  1
- java/src/main/java/com/saucelabs/simplesauce/SaucePlatform.java  1
- java/src/main/java/com/saucelabs/simplesauce/Prerun.java  1
- java/src/main/java/com/saucelabs/simplesauce/TimeoutStore.java  4
- java/src/main/java/com/saucelabs/simplesauce/InvalidSauceOptionsArgumentException.java  1
- java/src/main/java/com/saucelabs/simplesauce/SauceOptions.java  8
- java/src/main/java/com/saucelabs/simplesauce/Timeouts.java  1

See the complete overview on Codacy

@joshmgrant , yeah, I was looking at #19 which I started to discuss with @nadvolod over the summer.
My thought with username & access key, is there is no reason not to make a getter. The issue is that Java does not allow setting environment variables during a run. I would kind of like to allow the use case of people who store their credentials locally in a file that is in .gitignore so it isn't checked out (we did this at Honest Company). So the use case is:
  if (suaceOptions.username == nill) { // i.e. ENV["SAUCE_USERNAME"] not set on machine
    sauceOptions.username = getHiddenProperyFile.get("username");
  }

Sure we could require a user to do System.getenv("SAUCE_USERNAME"), but we can just as easily provide a convenience method.

@titusfortner I do think there's a reason not to have getters for username and access key, which is security. Getters could leak otherwise secure values into stack traces, console output, etc. I don't think Getters should be added.
You bring up a good example of when users may not want to use env vars to keep username and access keys. I think we initially said we were going to enforce using env vars anyway since it's recommended practice. We might want to return to this topic at some point as in #19 but I think only the Java bindings allow for other approaches. Maybe we should keep things consistent for now and change things up later.
I'll also see if there's any better approaches for mocking private members/methods here, since that would be the best approach for our needs.

Isn't being able to print out the ENV value just as leaky?
In Ruby I can (and have done), but this doesn't work in Java:
   ENV['SAUCE_USERNAME'] ||= load_properties['username']

I might be ok forcing it in ENV.

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2

Complexity increasing per file
==============================
- java/src/main/java/com/saucelabs/simplesauce/SauceOptions.java  8
- java/src/main/java/com/saucelabs/simplesauce/JobVisibility.java  1
- java/src/main/java/com/saucelabs/simplesauce/PageLoadStrategy.java  1
- java/src/main/java/com/saucelabs/simplesauce/TimeoutStore.java  4
- java/src/main/java/com/saucelabs/simplesauce/InvalidSauceOptionsArgumentException.java  1
- java/src/main/java/com/saucelabs/simplesauce/Timeouts.java  1
- java/src/main/java/com/saucelabs/simplesauce/Browser.java  1
- java/src/main/java/com/saucelabs/simplesauce/SaucePlatform.java  1
- java/src/main/java/com/saucelabs/simplesauce/UnhandledPromptBehavior.java  1
- java/src/main/java/com/saucelabs/simplesauce/Prerun.java  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2

Complexity increasing per file
==============================
- java/src/main/java/com/saucelabs/simplesauce/PageLoadStrategy.java  1
- java/src/main/java/com/saucelabs/simplesauce/Browser.java  1
- java/src/main/java/com/saucelabs/simplesauce/JobVisibility.java  1
- java/src/main/java/com/saucelabs/simplesauce/InvalidSauceOptionsArgumentException.java  1
- java/src/main/java/com/saucelabs/simplesauce/TimeoutStore.java  4
- java/src/main/java/com/saucelabs/simplesauce/UnhandledPromptBehavior.java  1
- java/src/main/java/com/saucelabs/simplesauce/Prerun.java  1
- java/src/main/java/com/saucelabs/simplesauce/SaucePlatform.java  1
- java/src/main/java/com/saucelabs/simplesauce/SauceOptions.java  8
- java/src/main/java/com/saucelabs/simplesauce/Timeouts.java  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2

Complexity increasing per file
==============================
- java/src/main/java/com/saucelabs/simplesauce/PageLoadStrategy.java  1
- java/src/main/java/com/saucelabs/simplesauce/SaucePlatform.java  1
- java/src/main/java/com/saucelabs/simplesauce/Timeouts.java  1
- java/src/main/java/com/saucelabs/simplesauce/InvalidSauceOptionsArgumentException.java  1
- java/src/main/java/com/saucelabs/simplesauce/SauceOptions.java  8
- java/src/main/java/com/saucelabs/simplesauce/JobVisibility.java  1
- java/src/main/java/com/saucelabs/simplesauce/Prerun.java  1
- java/src/main/java/com/saucelabs/simplesauce/Browser.java  1
- java/src/main/java/com/saucelabs/simplesauce/UnhandledPromptBehavior.java  1
- java/src/main/java/com/saucelabs/simplesauce/TimeoutStore.java  4

See the complete overview on Codacy


set dhcp dns

Ran Plan for project: local-lhr-unifi dir: infrastructure/local/lhr/unifi workspace: terragrunt
Show Output
00:50:04.239 INFO   Downloading Terraform configurations from ../../.. into ./.terragrunt-cache/gkWhbWDxgqtzdHaGVc2rmD2SNv8/i897m-_O44it5O1du4rqmlfb-ek
00:50:05.786 STDOUT tofu: Initializing the backend...
00:50:06.343 STDOUT tofu:
00:50:06.343 STDOUT tofu: Successfully configured the backend "s3"! OpenTofu will automatically
00:50:06.344 STDOUT tofu: use this backend unless the backend configuration changes.
00:50:06.498 STDOUT tofu: Initializing provider plugins...
00:50:06.499 STDOUT tofu: - Reusing previous version of hashicorp/aws from the dependency lock file
00:50:06.785 STDOUT tofu: - Reusing previous version of backblaze/b2 from the dependency lock file
00:50:06.906 STDOUT tofu: - Reusing previous version of cloudflare/cloudflare from the dependency lock file
00:50:07.116 STDOUT tofu: - Reusing previous version of integrations/github from the dependency lock file
00:50:07.306 STDOUT tofu: - Reusing previous version of vexxhost/uptimerobot from the dependency lock file
00:50:07.428 STDOUT tofu: - Reusing previous version of paultyng/unifi from the dependency lock file
00:50:09.192 STDOUT tofu: - Installing backblaze/b2 v0.8.12...
00:50:16.043 STDOUT tofu: - Installed backblaze/b2 v0.8.12. Signature validation was skipped due to the registry not containing GPG keys for this provider
00:50:17.195 STDOUT tofu: - Installing cloudflare/cloudflare v4.43.0...
00:50:22.165 STDOUT tofu: - Installed cloudflare/cloudflare v4.43.0 (signed, key ID C76001609EE3B136)
00:50:23.257 STDOUT tofu: - Installing integrations/github v6.2.2...
00:50:26.368 STDOUT tofu: - Installed integrations/github v6.2.2 (signed, key ID 38027F80D7FD5FB2)
00:50:27.701 STDOUT tofu: - Installing vexxhost/uptimerobot v0.8.2...
00:50:30.009 STDOUT tofu: - Installed vexxhost/uptimerobot v0.8.2. Signature validation was skipped due to the registry not containing GPG keys for this provider
00:50:31.290 STDOUT tofu: - Installing paultyng/unifi v0.41.0...
00:50:35.250 STDOUT tofu: - Installed paultyng/unifi v0.41.0. Signature validation was skipped due to the registry not containing GPG keys for this provider
00:50:36.612 STDOUT tofu: - Installing hashicorp/aws v5.70.0...
00:51:45.069 STDOUT tofu: - Installed hashicorp/aws v5.70.0 (signed, key ID 0C0AF313E5FD9F80)
00:51:45.070 STDOUT tofu: Providers are signed by their developers.
00:51:45.070 STDOUT tofu: If you'd like to know more about provider signing, you can read about it here:
00:51:45.070 STDOUT tofu: https://opentofu.org/docs/cli/plugins/signing/
00:51:45.070 STDOUT tofu: OpenTofu has made some changes to the provider dependency selections recorded
00:51:45.070 STDOUT tofu: in the .terraform.lock.hcl file. Review those changes and commit them to your
00:51:45.070 STDOUT tofu: version control system if they represent changes you intended to make.
00:51:45.071 STDOUT tofu: OpenTofu has been successfully initialized!

00:52:18.040 STDOUT tofu: OpenTofu used the selected providers to generate the following execution
00:52:18.040 STDOUT tofu: plan. Resource actions are indicated with the following symbols:
00:52:18.040 STDOUT tofu:   ~ update in-place
00:52:18.040 STDOUT tofu: OpenTofu will perform the following actions:
00:52:18.040 STDOUT tofu:   # unifi_network.vlan["vlan00"] will be updated in-place
00:52:18.040 STDOUT tofu:   ~ resource "unifi_network" "vlan" {
00:52:18.042 STDOUT tofu:       ~ dhcp_dns                     = [
00:52:18.043 STDOUT tofu:             "<IP_ADDRESS>",
00:52:18.044 STDOUT tofu:           + "<IP_ADDRESS>",
00:52:18.044 STDOUT tofu:           + "<IP_ADDRESS>",
00:52:18.044 STDOUT tofu:         ]
00:52:18.044 STDOUT tofu:         id                           = "66f8d0edb6203b5ea8f832a0"
00:52:18.044 STDOUT tofu:         name                         = "Service"
00:52:18.045 STDOUT tofu:         # (33 unchanged attributes hidden)
00:52:18.045 STDOUT tofu:     }
00:52:18.051 STDOUT tofu:   # unifi_network.vlan["vlan01"] will be updated in-place
00:52:18.051 STDOUT tofu:   ~ resource "unifi_network" "vlan" {
00:52:18.052 STDOUT tofu:       ~ dhcp_dns                     = [
00:52:18.052 STDOUT tofu:             "<IP_ADDRESS>",
00:52:18.052 STDOUT tofu:           + "<IP_ADDRESS>",
00:52:18.052 STDOUT tofu:           + "<IP_ADDRESS>",
00:52:18.052 STDOUT tofu:         ]
00:52:18.052 STDOUT tofu:         id                           = "670712535f0bef16bc8dab23"
00:52:18.052 STDOUT tofu:         name                         = "Guest"
00:52:18.052 STDOUT tofu:         # (33 unchanged attributes hidden)
00:52:18.052 STDOUT tofu:     }
00:52:18.053 STDOUT tofu:   # unifi_network.vlan["vlan02"] will be updated in-place
00:52:18.053 STDOUT tofu:   ~ resource "unifi_network" "vlan" {
00:52:18.053 STDOUT tofu:       ~ dhcp_dns                     = [
00:52:18.053 STDOUT tofu:             "<IP_ADDRESS>",
00:52:18.053 STDOUT tofu:           + "<IP_ADDRESS>",
00:52:18.053 STDOUT tofu:           + "<IP_ADDRESS>",
00:52:18.053 STDOUT tofu:         ]
00:52:18.053 STDOUT tofu:         id                           = "670712545f0bef16bc8dab27"
00:52:18.054 STDOUT tofu:         name                         = "Client"
00:52:18.054 STDOUT tofu:         # (33 unchanged attributes hidden)
00:52:18.054 STDOUT tofu:     }
00:52:18.054 STDOUT tofu:   # unifi_network.vlan["vlan03"] will be updated in-place
00:52:18.054 STDOUT tofu:   ~ resource "unifi_network" "vlan" {
00:52:18.054 STDOUT tofu:       ~ dhcp_dns                     = [
00:52:18.054 STDOUT tofu:             "<IP_ADDRESS>",
00:52:18.054 STDOUT tofu:           + "<IP_ADDRESS>",
00:52:18.054 STDOUT tofu:           + "<IP_ADDRESS>",
00:52:18.054 STDOUT tofu:         ]
00:52:18.055 STDOUT tofu:         id                           = "670712535f0bef16bc8dab21"
00:52:18.055 STDOUT tofu:         name                         = "IoT Public"
00:52:18.055 STDOUT tofu:         # (33 unchanged attributes hidden)
00:52:18.055 STDOUT tofu:     }
00:52:18.055 STDOUT tofu:   # unifi_network.vlan["vlan04"] will be updated in-place
00:52:18.055 STDOUT tofu:   ~ resource "unifi_network" "vlan" {
00:52:18.055 STDOUT tofu:       ~ dhcp_dns                     = [
00:52:18.055 STDOUT tofu:             "<IP_ADDRESS>",
00:52:18.055 STDOUT tofu:           + "<IP_ADDRESS>",
00:52:18.056 STDOUT tofu:           + "<IP_ADDRESS>",
00:52:18.056 STDOUT tofu:         ]
00:52:18.056 STDOUT tofu:         id                           = "670712535f0bef16bc8dab25"
00:52:18.056 STDOUT tofu:         name                         = "IoT Private"
00:52:18.056 STDOUT tofu:         # (33 unchanged attributes hidden)
00:52:18.056 STDOUT tofu:     }
00:52:18.056 STDOUT tofu: Plan: 0 to add, 5 to change, 0 to destroy.
00:52:18.056 STDOUT tofu:

:arrow_forward: To apply this plan, comment:atlantis apply -p local-lhr-unifi

:put_litter_in_its_place: To delete this plan and lock, click here
:repeat: To plan this project again, comment:atlantis plan -p local-lhr-unifi

Plan: 0 to add, 5 to change, 0 to destroy.

:fast_forward: To apply all unapplied plans from this Pull Request, comment:atlantis apply

:put_litter_in_its_place: To delete all plans and locks from this Pull Request, comment:atlantis unlock

Ran Plan for project: local-lhr-unifi dir: infrastructure/local/lhr/unifi workspace: terragrunt
Show Output
00:53:12.156 INFO   Downloading Terraform configurations from ../../.. into ./.terragrunt-cache/gkWhbWDxgqtzdHaGVc2rmD2SNv8/i897m-_O44it5O1du4rqmlfb-ek
00:53:12.744 STDOUT tofu: Initializing the backend...
00:53:13.101 STDOUT tofu:
00:53:13.101 STDOUT tofu: Successfully configured the backend "s3"! OpenTofu will automatically
00:53:13.101 STDOUT tofu: use this backend unless the backend configuration changes.
00:53:13.198 STDOUT tofu: Initializing provider plugins...
00:53:13.198 STDOUT tofu: - Reusing previous version of cloudflare/cloudflare from the dependency lock file
00:53:13.332 STDOUT tofu: - Reusing previous version of integrations/github from the dependency lock file
00:53:13.398 STDOUT tofu: - Reusing previous version of vexxhost/uptimerobot from the dependency lock file
00:53:13.456 STDOUT tofu: - Reusing previous version of paultyng/unifi from the dependency lock file
00:53:13.521 STDOUT tofu: - Reusing previous version of hashicorp/aws from the dependency lock file
00:53:13.605 STDOUT tofu: - Reusing previous version of backblaze/b2 from the dependency lock file
00:53:14.795 STDOUT tofu: - Installing integrations/github v6.2.2...
00:53:17.500 STDOUT tofu: - Installed integrations/github v6.2.2 (signed, key ID 38027F80D7FD5FB2)
00:53:18.574 STDOUT tofu: - Installing vexxhost/uptimerobot v0.8.2...
00:53:20.865 STDOUT tofu: - Installed vexxhost/uptimerobot v0.8.2. Signature validation was skipped due to the registry not containing GPG keys for this provider
00:53:21.933 STDOUT tofu: - Installing paultyng/unifi v0.41.0...
00:53:24.117 STDOUT tofu: - Installed paultyng/unifi v0.41.0. Signature validation was skipped due to the registry not containing GPG keys for this provider
00:53:25.240 STDOUT tofu: - Installing hashicorp/aws v5.70.0...
00:54:28.709 STDOUT tofu: - Installed hashicorp/aws v5.70.0 (signed, key ID 0C0AF313E5FD9F80)
00:54:30.757 STDOUT tofu: - Installing backblaze/b2 v0.8.12...
00:54:45.187 STDOUT tofu: - Installed backblaze/b2 v0.8.12. Signature validation was skipped due to the registry not containing GPG keys for this provider
00:54:46.293 STDOUT tofu: - Installing cloudflare/cloudflare v4.43.0...
00:54:51.041 STDOUT tofu: - Installed cloudflare/cloudflare v4.43.0 (signed, key ID C76001609EE3B136)
00:54:51.041 STDOUT tofu: Providers are signed by their developers.
00:54:51.041 STDOUT tofu: If you'd like to know more about provider signing, you can read about it here:
00:54:51.041 STDOUT tofu: https://opentofu.org/docs/cli/plugins/signing/
00:54:51.042 STDOUT tofu: OpenTofu has made some changes to the provider dependency selections recorded
00:54:51.042 STDOUT tofu: in the .terraform.lock.hcl file. Review those changes and commit them to your
00:54:51.042 STDOUT tofu: version control system if they represent changes you intended to make.
00:54:51.043 STDOUT tofu: OpenTofu has been successfully initialized!

00:55:25.356 STDOUT tofu: OpenTofu used the selected providers to generate the following execution
00:55:25.356 STDOUT tofu: plan. Resource actions are indicated with the following symbols:
00:55:25.357 STDOUT tofu:   ~ update in-place
00:55:25.357 STDOUT tofu: OpenTofu will perform the following actions:
00:55:25.357 STDOUT tofu:   # unifi_network.vlan["vlan00"] will be updated in-place
00:55:25.357 STDOUT tofu:   ~ resource "unifi_network" "vlan" {
00:55:25.357 STDOUT tofu:       ~ dhcp_dns                     = [
00:55:25.357 STDOUT tofu:             "<IP_ADDRESS>",
00:55:25.357 STDOUT tofu:           + "<IP_ADDRESS>",
00:55:25.357 STDOUT tofu:           + "<IP_ADDRESS>",
00:55:25.357 STDOUT tofu:         ]
00:55:25.357 STDOUT tofu:       ~ domain_name                  = "localdomain" -> "service.localdomain"
00:55:25.358 STDOUT tofu:         id                           = "66f8d0edb6203b5ea8f832a0"
00:55:25.358 STDOUT tofu:         name                         = "Service"
00:55:25.358 STDOUT tofu:         # (32 unchanged attributes hidden)
00:55:25.358 STDOUT tofu:     }
00:55:25.358 STDOUT tofu:   # unifi_network.vlan["vlan01"] will be updated in-place
00:55:25.358 STDOUT tofu:   ~ resource "unifi_network" "vlan" {
00:55:25.358 STDOUT tofu:       ~ dhcp_dns                     = [
00:55:25.359 STDOUT tofu:             "<IP_ADDRESS>",
00:55:25.359 STDOUT tofu:           + "<IP_ADDRESS>",
00:55:25.359 STDOUT tofu:           + "<IP_ADDRESS>",
00:55:25.359 STDOUT tofu:         ]
00:55:25.359 STDOUT tofu:         id                           = "670712535f0bef16bc8dab23"
00:55:25.359 STDOUT tofu:         name                         = "Guest"
00:55:25.359 STDOUT tofu:         # (33 unchanged attributes hidden)
00:55:25.359 STDOUT tofu:     }
00:55:25.359 STDOUT tofu:   # unifi_network.vlan["vlan02"] will be updated in-place
00:55:25.359 STDOUT tofu:   ~ resource "unifi_network" "vlan" {
00:55:25.359 STDOUT tofu:       ~ dhcp_dns                     = [
00:55:25.360 STDOUT tofu:             "<IP_ADDRESS>",
00:55:25.360 STDOUT tofu:           + "<IP_ADDRESS>",
00:55:25.360 STDOUT tofu:           + "<IP_ADDRESS>",
00:55:25.360 STDOUT tofu:         ]
00:55:25.360 STDOUT tofu:       ~ domain_name                  = "service.localdomain" -> "client.localdomain"
00:55:25.360 STDOUT tofu:         id                           = "670712545f0bef16bc8dab27"
00:55:25.360 STDOUT tofu:         name                         = "Client"
00:55:25.360 STDOUT tofu:         # (32 unchanged attributes hidden)
00:55:25.361 STDOUT tofu:     }
00:55:25.361 STDOUT tofu:   # unifi_network.vlan["vlan03"] will be updated in-place
00:55:25.361 STDOUT tofu:   ~ resource "unifi_network" "vlan" {
00:55:25.361 STDOUT tofu:       ~ dhcp_dns                     = [
00:55:25.362 STDOUT tofu:             "<IP_ADDRESS>",
00:55:25.362 STDOUT tofu:           + "<IP_ADDRESS>",
00:55:25.362 STDOUT tofu:           + "<IP_ADDRESS>",
00:55:25.362 STDOUT tofu:         ]
00:55:25.362 STDOUT tofu:         id                           = "670712535f0bef16bc8dab21"
00:55:25.362 STDOUT tofu:         name                         = "IoT Public"
00:55:25.362 STDOUT tofu:         # (33 unchanged attributes hidden)
00:55:25.362 STDOUT tofu:     }
00:55:25.362 STDOUT tofu:   # unifi_network.vlan["vlan04"] will be updated in-place
00:55:25.362 STDOUT tofu:   ~ resource "unifi_network" "vlan" {
00:55:25.363 STDOUT tofu:       ~ dhcp_dns                     = [
00:55:25.363 STDOUT tofu:             "<IP_ADDRESS>",
00:55:25.363 STDOUT tofu:           + "<IP_ADDRESS>",
00:55:25.363 STDOUT tofu:           + "<IP_ADDRESS>",
00:55:25.363 STDOUT tofu:         ]
00:55:25.363 STDOUT tofu:         id                           = "670712535f0bef16bc8dab25"
00:55:25.363 STDOUT tofu:         name                         = "IoT Private"
00:55:25.363 STDOUT tofu:         # (33 unchanged attributes hidden)
00:55:25.363 STDOUT tofu:     }
00:55:25.363 STDOUT tofu: Plan: 0 to add, 5 to change, 0 to destroy.
00:55:25.363 STDOUT tofu:

:arrow_forward: To apply this plan, comment:atlantis apply -p local-lhr-unifi

:put_litter_in_its_place: To delete this plan and lock, click here
:repeat: To plan this project again, comment:atlantis plan -p local-lhr-unifi

Plan: 0 to add, 5 to change, 0 to destroy.

:fast_forward: To apply all unapplied plans from this Pull Request, comment:atlantis apply

:put_litter_in_its_place: To delete all plans and locks from this Pull Request, comment:atlantis unlock

atlantis apply


[feature request]: allow binding apps to icons from lawnicons app

About this discussion
Some tools (mostly root-related) use randomised package names to avoid detection, and are impossible to be mapped in app source code. Allowing to change bindings from app would fix this, and also allow to set an icon for apps that don't have one yet, so they won't stand out from the rest.

On the one hand, I don't quite understand what prevents you from changing icons using launchers.
On the other hand, I had a similar idea, but for a different reason. It may be more convenient to install an icon through Lawnicons when you started searching for icons there, rather than in a launcher settings.


Self-contained HTML files

Right now some HTML file assets are loaded from the Internet.
I can implement solution for building self-contained HTML files for offline use.

It would be nice. I thought about that just today. We can add a flag for that in 'writeFile' options.

Nice. Will try to create PR this week

It seems like self-contained html weight too much. Maybe it is better to download js and put it into the same directory. This way several plots could share it.

Done via 1531db288309289a870515d66a31dc5e79591195


Persisting complex objects

I'd like to ask for some advice rather than raising an issue.
In my application I'm getting a lot of info from a server and based on that I build complex objects and structures. When using the app, everything works okay (of course), but I do not know how I could best persist this complex object between the foregroundtask calls when the main app is closed. Storing it with saveData and getData is very cumbersome, as the objects are quite complex, so I would like to avoid it.
Is there a way to e.g. store the object in the task handler and when e.g. I open the application again, just pass the references back? (I'm not even speaking about the periodic task I need to do, which would also go with the update of these objects, I would really-really like to avoid constant serialization/deserialization, if possible. :/ )

TL;DR: You have no other choice!
All other methods of persisting data (in flutter) have some kind of dependency on the widget bindings the you have no access to it inside foreground tasks isolate. And only thing that you can use are the FlutterForegroundTask.getData() & FlutterForegroundTask.saveData() methods. So json serialization is the only way to go.

TL;DR: You have no other choice!
All other methods of persisting data (in flutter) have some kind of dependency on the widget bindings the you have no access to it inside foreground tasks isolate. And only thing that you can use are the FlutterForegroundTask.getData() & FlutterForegroundTask.saveData() methods. So json serialization is the only way to go.

Not necessarily, Isar would work just fine even inside the isolate. Take a look at it. Objectbox would work fine as well.


Teensy 4.1 Support

As far I can see teensy 3.x is already supported. I got the teensy 4.1 and would like to use GUIslice. with ILI9341_t3 and its XPT2046_Touchscreen.
In the comments in section "; MCU: Teensy" it is written, that teensy 4.1 could be added by changing the line
board = teensy41
Unfortunately this leads to an error:
.platformio\packages\framework-arduinoteensy\libraries\UTFT\UTFT.cpp:81:4: error: #error "Unsupported ARM MCU!"
Best Regards

Hi @MkMunich — I assume this has been superseded by #369 ? If so, perhaps we will close this ticket and we’ll continue in the discussion thread. Thanks!

Hi Calvin, this is okay with me. Best Regards


duplicate processes when it's both a consumeItem and a createItem

https://democratized.space/inventory/item/0
We have 2 options:

ignore this until item locks are implemented (viable option)
eliminate duplicates

option 1 from the description is likely not great (as we'll still have required, consumed, and created lists once item locks are implemented (startProcess will burn requireItems and refund them on cancel or collect). This leaves only "eliminate duplicates"


Universal support

Would be nice to have integration with http://left-pad.io/

What do you mean?))

Relying purely into logic in this gem may not be futureproof solution. Due to that might make sense to integrate core logic with established service. To allow full user control it could be made configurable, which core engine is used to make heavy lifting of calculations. This leaves also open future possibility of adding new engines for calculation, which would allow community to provide them as need arises.


map_rect MPI

Summary:
Introduce MPI enabled map_rect backend
Description:
enable within-chain parallelization in stan using MPI in map_rect
Reproducible Steps:
NA
Current Output:
all good, bbut too slow for some applications like ODE based hierarchical models
Expected Output:
faster output with more CPUs
Additional Information:
Provide any additional information here.
Current Version:
v2.17.0

@bob-carpenter Progress! The main branch is up in feature/issue-848-map_rect-MPI. While the mpi_parallel_call class can be crammed into our internal namespace and thus only be implicitly tested through map_rect_mpi tests, I think it is worth to place this class in stan::math which means I need to write up some tests for it.
If you think the above mentioned class should be internal I can do that and file the PR now. However, I think with using mock classes should allow to write those tests efficiently and we would gain this facility for general use. I will do this unless you disagree.

Sounds good to me.  I'm not going to be able to get to reviewing all this for a week or so anyway.

Ok, then I will add those tests using mockups.
One more thing: The threading stuff is now in a useful state with the latest fixes going into stan-math. My plan is to have the map_rect MPI code use threading locally whenever STAN_THREADS is defined. Are u good with reviewing this all at once? The design I have in mind would turn to serial execution if STAN_THREADS is not defined, but otherwise I would use threading. The design would follow what I have done for map_rect_concurrent, see here:
https://github.com/stan-dev/math/blob/f5be4eba4114895c9880f793931e77acb90070fc/stan/math/prim/mat/functor/map_rect_concurrent.hpp#L74
If you prefer to first go over a MPI only map_rect, we do that. Performance wise it will be very interesting to combine threading (on-machine parallelism) with MPI (between machine parallelism).

Can you provide more background in issue summary. I don't follow the setup of "within chain parallel" + MPI

I think it'll be easier to review MPI and multi-threaded separately if possible.

@yizhang-cae I hope the edit makes it clear.
@bob-carpenter Ok, let's go in steps.


Add support for authentication based on reverse proxy email.

This is useful in scenarios where the reverse proxy may have knowledge
of user emails, but does not know about usernames set on gitea,
as in the feature request in #19948.
I tested this by setting up a fresh gitea install with one user mhl
and email<EMAIL_ADDRESS>I then created a private repo,
and configured gitea to allow reverse proxy authentication.
Via curl I confirmed that these two requests now work and return 200s:
curl http://localhost:3000/mhl/private -I --header "X-Webauth-User: mhl"
curl http://localhost:3000/mhl/private -I --header "X-Webauth-Email<EMAIL_ADDRESS>Before this commit, the second request did not work.
I also verified that if I provide an invalid email or user,
a 404 is correctly returned as before
Closes #19948

hi, is there anything I need to do to get the other +1 so this PR can be pushed? Hoping to use a "real" version of gitea rather than one I've self built :)


sbt 1.0.1 -> 1.0.2

test run: https://scala-ci.typesafe.com/job/scala-2.12.x-integrate-community-build/1950/consoleFull (404 til Jenkins finds the TOP SECRET folder I'd noticed when Mordecai had spread out the atlas)

fyi @eed3si9n @dwijnand


1:1 table support

With the new database structure, the QP needs to support 1:1 relationships. These are defined as cases where a FK is also the PK of a table, which means that it can only have one row per referred row in the foreign table. This is the pattern on which the new database is built, but it is not currently recognized by the query planner (as all FK relationships are interpreted as M:1.
Should be a relatively easy fix.
Possibly related to #2

PR up in #12


Removing trailing whitespace

I'm sorry to be the one that does this, but when browsing dlib I noticed that there's a ton of trailing whitespace littered around. No big deal at all, it's just a "clean" thing.
I totally realize that there's over a thousand files to verify here which sucks, but I only performed this command (zsh style globbing):
sed -i -r 's/([^ \t]+)[ \t]+$/\1/' **/*.h **/*.cpp

You can verify at home by doing the same and diffing the diffs.
$ sed -i -r 's/([^ \t]+)[ \t]+$/\1/' **/*.h **/*.cpp && git diff | sha1sum
f563b2b105161c170c41090b2ba425150125ca3c  -

Should be the same sha1. Obviously, you have to trust that regex to do the correct thing, but it's pretty basic. Let me know if this kind of thing isn't important, not a big deal by any stretch like I said.

Note that the sha1 is based on master being 617ffba

Thanks for the PR, but this change disrupts the change control history and makes it difficult to see what was really changed when.  Which is something that is sometimes useful to know.  It would be one thing if it fixed bugs but having less white space in the code doesn't matter in any practical use case.


Does not update links

The description claims ... "After using "Rename all attachments" the plugin updates the links in all notes that used these files."
It renamed the files but did not update the links accordingly.
FWI ... Fresh install, using the latest versions of everything.

@OldManUmby what kind of links are you using?

Wikilink: [[my_image.jpg]]
Markdown: my_image

If you use markdown links, then ignore me...
I'm just coming in here as a new user and got burned because I didn't notice this part of the readme.

The "Rename all attachments" command is only compatible with standard markdown links (). Wikilinks are not supported. You can convert all wikilinks to markdown links with Consistent attachments and links plugin. ''Rename only active attachments'' command works with all kind of links and generate links based on your preferences.

I believe it should be even more upfront in the readme.  A potentially destructive action like this needs to be 100% clearly stated.
A few notes is one thing but 100's and it's caused some busy work to cleanup.

Yep. I saw that. I didn't use wikilinks on the images that did not get renamed. I used standard markdown links. Yet nothing happened.

Hello. Is the problem still not resolved? Could you send a test vault with sample notes showing the problem?

I have the same issue. I use markdown link, but not wiki-link.


Add arguments' parsing into installCatalog.sh

Three arguments should be able to input:

auth key
api host
namaspace

Please review this patch together with https://github.com/openwhisk/openwhisk/pull/885

Please go to https://github.com/openwhisk/openwhisk-catalog/pull/92


[Bug]: habana_main - gpt-j-6b fail on graph compile failed.

Your current environment
The output of `python collect_env.py`

🐛 Describe the bug
# VLLM_SKIP_WARMUP=true PT_HPU_ENABLE_LAZY_COLLECTIVES=true VLLM_RAY_DISABLE_LOG_TO_DRIVER=1

from vllm import LLM, SamplingParams
from time import sleep
import traceback

def test_llm_model(model):

    tp_size = 1

    llm = LLM(model=model,
              tensor_parallel_size=tp_size,
              block_size=128,
              trust_remote_code=True,
              enforce_eager=True,
             )

    prompts = [
        "The future of AI is",
    ]
    sampling_params = [
        SamplingParams(temperature=0.0, max_tokens=128,)
        for _ in prompts
    ]

    output = llm.generate(prompts, sampling_params=sampling_params, use_tqdm=False)
    del llm
    return output

if __name__ == "__main__":
    model_list = ['EleutherAI/gpt-j-6b']
    for model in model_list:
        try:
            output = test_llm_model(model=model)
            print(f"- {model} succeed")
            print(f"output is", output)
        except Exception as e:
            print(f" - {model} faied!")
            print(f"Error info: {e}")
            print(traceback.format_exc())

error log
============================= HABANA PT BRIDGE CONFIGURATION ===========================
 PT_HPU_LAZY_MODE = 1
 PT_RECIPE_CACHE_PATH =
 PT_CACHE_FOLDER_DELETE = 0
 PT_HPU_RECIPE_CACHE_CONFIG =
 PT_HPU_MAX_COMPOUND_OP_SIZE =<PHONE_NUMBER>854775807
 PT_HPU_LAZY_ACC_PAR_MODE = 1
 PT_HPU_ENABLE_REFINE_DYNAMIC_SHAPES = 0
---------------------------: System Configuration :---------------------------
Num CPU Cores : 152
CPU RAM       :<PHONE_NUMBER> KB
------------------------------------------------------------------------------
INFO 08-28 22:57:42 selector.py:85] Using HabanaAttention backend.
INFO 08-28 22:57:42 loader.py:284] Loading weights on hpu ...
INFO 08-28 22:57:43 weight_utils.py:224] Using model weights format ['*.bin']

Loading pt checkpoint shards:   0% Completed | 0/1 [00:00<?, ?it/s]

Loading pt checkpoint shards: 100% Completed | 1/1 [00:22<00:00, 22.98s/it]

Loading pt checkpoint shards: 100% Completed | 1/1 [00:22<00:00, 22.98s/it]

INFO 08-28 22:58:06 habana_model_runner.py:472] Pre-loading model weights on hpu:0 took 11.27 GiB of device memory (11.28 GiB/94.62 GiB used) and 23.58 GiB of host memory (101.3 GiB/1008 GiB used)
INFO 08-28 22:58:06 habana_model_runner.py:517] Wrapping in HPU Graph took 0 B of device memory (11.28 GiB/94.62 GiB used) and -252 KiB of host memory (101.4 GiB/1008 GiB used)
INFO 08-28 22:58:06 habana_model_runner.py:521] Loading model weights took in total 11.27 GiB of device memory (11.28 GiB/94.62 GiB used) and 23.71 GiB of host memory (101.4 GiB/1008 GiB used)
 - EleutherAI/gpt-j-6b faied!
Error info: Graph compile failed. synStatus=synStatus 26 [Generic failure].
Traceback (most recent call last):
  File "/workspace/script/test_llm_generate_modellist.py", line 49, in <module>
    output = test_llm_model(model=model)
  File "/workspace/script/test_llm_generate_modellist.py", line 14, in test_llm_model
    llm = LLM(model=model,
  File "/workspace/vllm/vllm/entrypoints/llm.py", line 155, in __init__
    self.llm_engine = LLMEngine.from_engine_args(
  File "/workspace/vllm/vllm/engine/llm_engine.py", line 456, in from_engine_args
    engine = cls(
  File "/workspace/vllm/vllm/engine/llm_engine.py", line 266, in __init__
    self._initialize_kv_caches()
  File "/workspace/vllm/vllm/engine/llm_engine.py", line 365, in _initialize_kv_caches
    self.model_executor.determine_num_available_blocks())
  File "/workspace/vllm/vllm/executor/habana_executor.py", line 77, in determine_num_available_blocks
    return self.driver_worker.determine_num_available_blocks()
  File "/usr/local/lib/python3.10/dist-packages/torch/utils/_contextlib.py", line 115, in decorate_context
    return func(*args, **kwargs)
  File "/workspace/vllm/vllm/worker/habana_worker.py", line 142, in determine_num_available_blocks
    self.model_runner.profile_run()
  File "/workspace/vllm/vllm/worker/habana_model_runner.py", line 1141, in profile_run
    self.warmup_scenario(max_batch_size,
  File "/workspace/vllm/vllm/worker/habana_model_runner.py", line 1203, in warmup_scenario
    self.execute_model(inputs, kv_caches, warmup_mode=True)
  File "/usr/local/lib/python3.10/dist-packages/torch/utils/_contextlib.py", line 115, in decorate_context
    return func(*args, **kwargs)
  File "/workspace/vllm/vllm/worker/habana_model_runner.py", line 1652, in execute_model
    output = self.model.sample(
  File "/workspace/vllm/vllm/worker/habana_model_runner.py", line 241, in sample
    return self.model.sample(*args, **kwargs)
  File "/workspace/vllm/vllm/model_executor/models/gpt_j.py", line 260, in sample
    next_tokens = self.sampler(logits, sampling_metadata)
  File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1535, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1585, in _call_impl
    result = forward_call(*args, **kwargs)
  File "/workspace/vllm/vllm/model_executor/layers/sampler.py", line 138, in forward
    sample_results, maybe_sampled_tokens_tensor = _sample(
  File "/workspace/vllm/vllm/model_executor/layers/sampler.py", line 711, in _sample
    return _sample_with_torch(
  File "/workspace/vllm/vllm/model_executor/layers/sampler.py", line 592, in _sample_with_torch
    sample_results = _greedy_sample(seq_groups, greedy_samples)
  File "/workspace/vllm/vllm/model_executor/layers/sampler.py", line 336, in _greedy_sample
    samples_lst = samples.tolist()
RuntimeError: Graph compile failed. synStatus=synStatus 26 [Generic failure].

inc shutdown
inc shutdown
inc shutdown
inc shutdown

Fixed with https://github.com/HabanaAI/vllm-fork/pull/245


bugfix/virtual host in s3 fallback

Codecov Report

Merging #1150 (f4bd7a7) into master (abd5050) will decrease coverage by 0.29%.
The diff coverage is 50.00%.

@@            Coverage Diff             @@
##           master    #1150      +/-   ##
==========================================
- Coverage   47.37%   47.07%   -0.30%
==========================================
  Files         189      190       +1
  Lines       14568    14745     +177
==========================================
+ Hits         6901     6941      +40
- Misses       6767     6881     +114
- Partials      900      923      +23

Impacted Files
Coverage Δ

gateway/handler.go
56.00% <50.00%> (-0.22%)
:arrow_down:

graveler/sstable/iterator.go
92.30% <0.00%> (-7.70%)
:arrow_down:

catalog/rocks/entry_catalog.go
15.04% <0.00%> (-6.39%)
:arrow_down:

catalog/mvcc/cataloger_create_repository.go
59.25% <0.00%> (-3.71%)
:arrow_down:

catalog/mvcc/cataloger_commit.go
77.14% <0.00%> (-2.86%)
:arrow_down:

graveler/sstable/manager.go
52.94% <0.00%> (-1.61%)
:arrow_down:

pyramid/tier_fs.go
60.38% <0.00%> (-0.80%)
:arrow_down:

config/config.go
30.89% <0.00%> (-0.47%)
:arrow_down:

block/adapter.go
0.00% <0.00%> (ø)

block/gs/adapter.go
0.00% <0.00%> (ø)

... and 8 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update abd5050...f4bd7a7. Read the comment docs.

Codecov Report

Merging #1150 (f4bd7a7) into master (abd5050) will decrease coverage by 0.29%.
The diff coverage is 50.00%.

@@            Coverage Diff             @@
##           master    #1150      +/-   ##
==========================================
- Coverage   47.37%   47.07%   -0.30%
==========================================
  Files         189      190       +1
  Lines       14568    14745     +177
==========================================
+ Hits         6901     6941      +40
- Misses       6767     6881     +114
- Partials      900      923      +23

Impacted Files
Coverage Δ

gateway/handler.go
56.00% <50.00%> (-0.22%)
:arrow_down:

graveler/sstable/iterator.go
92.30% <0.00%> (-7.70%)
:arrow_down:

catalog/rocks/entry_catalog.go
15.04% <0.00%> (-6.39%)
:arrow_down:

catalog/mvcc/cataloger_create_repository.go
59.25% <0.00%> (-3.71%)
:arrow_down:

catalog/mvcc/cataloger_commit.go
77.14% <0.00%> (-2.86%)
:arrow_down:

graveler/sstable/manager.go
52.94% <0.00%> (-1.61%)
:arrow_down:

pyramid/tier_fs.go
60.38% <0.00%> (-0.80%)
:arrow_down:

config/config.go
30.89% <0.00%> (-0.47%)
:arrow_down:

block/adapter.go
0.00% <0.00%> (ø)

block/gs/adapter.go
0.00% <0.00%> (ø)

... and 8 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update abd5050...f4bd7a7. Read the comment docs.


GDScript: solve _populate_class_members() cyclic dependency problem

Currently based off of #79163 to help with error reporting.
Fixes #78146, which occurs because _populate_class_members(descendant_class) is getting called during a call for _populate_class_members(ancestor_class). Thus class members of ancestors are not available for the descendant class when it is populating its own, resulting the identifier not found error of the linked issue when the descendant class gets compiled.
Issue 🔥
GDScriptCompiler::_populate_class_members() sets up the datastructures so that the compiler knows the addresses of member variables of the class being compiled. For this, it needs to know members its base class, so that those are also addressable. In order to obtain those members, it asks for the a fully compiled script of the base class using GDScriptCache::get_full_script().
However in certain configurations of dependencies, the base class of the current class may depend on descendant class. Let's say Daughter(D) extends Mother(M) extends Grandmother(GM), as in the linked issue. If you start by compiling (not just analyzing) M, that requires GM's class members, so you get_full_script(GM), but if GM somehow references D in a way that asks for its get_full_script(D), then D will run its _populate_class_members() without M having hers populated from GM.
Oof, that's a mouthful.
Solution ⚕
The solution here was to make it so that _populate_class_members() did not require get_full_script(), but instead only requires solving the base class' interface, followed by calling its _populate_class_members(). This does not trigger get_full_script(), and so descendant classes don't get compiled before their base classes are done populating their members.
Concerns 😨
I'm not super well versed in the meta-organization of the GDScript infrastructure, so I wonder whether this is the best solution. This doesn't so much solve cyclic dependencies as it sidesteps them insofar as _populate_class_members is concerned. Maybe that's not so bad, since it's such a specific case?
Either way, I'd love to see a refactor of the way scripts are loaded, maybe doing away with get_shallow/full_script and using GDScriptCache/raise_status() to give us more fine-grained control over what is needed at each point in time, and making GDScript::reload(), which get_full_script() relies on, a little less monolithic.

Currently running into failure of the out_of_order_external.gd test, but only when running the tests. It works both in-editor and when directly running the scene 🤔 Will keep investigating.

Currently running into failure of the out_of_order_external.gd test, but only when running the tests. It works both in-editor and when directly running the scene 🤔 Will keep investigating.

This appears to have been caused by the fact that the test runner doesn't use ResourceLoader::load() to load a GDScript, it creates it itself. This meant that GDScript::path was being set but Resource::path was empty, which meant that GDScriptCache::finish_compiling(main_script->get_path()), which grabs the Resource's path, was passing it the empty string, and thus finish_compiling was doing a no-op.

Sure, let's go ahead with this. Thanks!

Nice, thank you! Let's keep an eye out for potential regressions :)

Given the regressions I'd err on the side of caution and skip this from cherry-picking. If there is still desire to bring this to 4.1.x, I'd appreciate a summary of the PRs that need to be picked and the stability of this change. But given that some of the fixes are pretty recent, I'd at least give it more time.

The bug this fixes can be pretty project-stopping with unclear or impossible workarounds, but it only affects with cyclic dependencies and specific load orders. Unless we see a lot of folks complaining about class members that aren't recognized in 4.1, I think you're right in letting this + the recent fixes stew a little longer in 4.2 :)
The current other PRs that continue this effort to fix cyclic dependencies in compilation are #81577 and #81201. If


Invalid gtag.config default value

@johannschopplich thanks for the update. My config looks like this (I am using  my runtime config and .env for the container ID):
gtag: {
  initialConsent: false
}

When I call useGtagConsent(true) when consent is given on button click (or in the layout template if consent has been cookied), I get the following reported from the Google Analytics Debugger Chrome dev tool:
Processing GTAG command: ["config", "G-Z6D9QQFKZ4", ""]
Ignored "config" command. Invalid arguments found.
Expected: "[config, string, plain Object]"Actual:   ["config", "G-Z6D9QQFKZ4", ""]

What format should I be defining here whilst still using .env for the container ID?
Originally posted by @russback in https://github.com/johannschopplich/nuxt-gtag/issues/9#issuecomment-1514376191

@russback Thanks for reporting. I will publish a fix this evening.


Use stderr when reporting errors

I'm really surprised I used println. I'm not sure what came over me. I don't want to put a bigger change on you, but what do you think of switching to a proper logger with env_logger (https://crates.io/crates/env_logger), which is the easy top-level driver bit for the log crate, which provides proper error!, warn! and info! macros?

That might also subsume #55 - we could use info/warn/error

That sounds reasonable, I can make that change. I had somewhat subconsciously been worried about facing the plethora of logger choices that we had with Haskell, but our needs are light and this seems like a reasonable library.
My intended changes would be:

Parse cmdline to get verbosity settings
init the env_logger based on the verbosity settings (env can override).  Verbosity 0 would be warn, verbosity 1 would be info, and verbosity 2 would be debug.  Env var filter name would be "BUILD_BOM_LOG" because this is a wrapper that might invoke other rust apps unless you'd prefer sticking with the default "RUST_LOG".
env_logger always writes to stderr, so I would not use it for printing the summary if enabled (https://github.com/travitch/build-bom/pull/55/files#diff-08b7179a709f2ecef259a56c08e59ab27f46d9a8073a5e7dde28fffe9e532d3aR190).

I think we can just stick with RUST_LOG for now. It is a good point that it can invoke other rust programs. I know the cargo build currently freaks out under build-bom.

OK, this is ready to merge again.  This includes #55 (because the changes overlapped) and 55 should be abandoned.
I had to create run_bom_command as an entrypoint for testing because the test framework already establishes a logger and so run_bom's re-attempt to install a logger would fail.  If you would prefer, I can add code instead that handles the duplicate logger initialization failure, but that seemed like awkward code for a situation that should only happen in a testing environment.

[btw, for whatever reason I do not have github privs to select you--or anyone--as a reviewer.]


Think about to fix the issues found by adapter checker

I am an automatic service that looks for possible errors in ioBroker and creates an issue for it. The link below leads directly to the test:
https://adapter-check.iobroker.in/?q=https://raw.githubusercontent.com/schmupu/ioBroker.pollenflug

[ ] [E140] width and height of logo are not equal
[ ] [E201] Bluefox was not found in the collaborators on NPM!. Please execute in adapter directory: "npm owner add bluefox iobroker.pollenflug"

Thanks,
your automatic adapter checker.
P.S.: There is a community in Github, which supports the maintenance and further development of adapters. There you will find many experienced developers who are always ready to assist anyone. New developers are always welcome there. For more informations visit: https://github.com/iobroker-community-adapters/info

fixed in version 1.0.3


Onwer

Wolcome to CYPRO.Rinalofficial21

@Rinal21

@3. Attack patterns
………………………………
CAPEC has the following patterns for this weakness:
❏ CAPEC-31: Accessing/Intercepting/Modifying HTTP Cookies
❏ CAPEC-34: HTTP Response Splitting
❏ CAPEC-63: Simple Script Injection
❏ CAPEC-85: Client Network Footprinting (using AJAX/XSS)
This weakness is described in WASC classification as four separate techniques:
❏ WASC-27: HTTP Response Smuggling
❏ WASC-25: HTTP Response Splitting
❏ WASC-26: HTTP Request Smuggling
❏ WASC-24: HTTP Request Splitting

Affected software
………………………………
Any software that uses input data to construct headers is potentially vulnerable to this weakness. In most cases, these are web applications, web servers, caching proxies.

Severity and CVSS Scoring
……………………………………..
Depending on potential damage this weakness could impact the integrity of the application and is usually scored as:
5.3 [CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N] — Medium severity.

Credits: https://www.immuniweb.com/


log format for apache not working

I' m having trouble parsing my apache error_log
I tried all the presets COMBINED, COMMON, VCOMMON, W3C etc..
2021/01/17 18:01:39 [error] 15216#0: *151966 FastCGI sent in stderr: "PHP message: PHP Warning:  Cannot modify header information - headers already sent by (output started at /var/www/vhosts/247e/app/releases/20210116205801/web/app/themes//vendor/timber/timber/lib/Timber.php:411) in /var/www/vhosts/247e/app/releases/20210116205801/web/wp/wp-includes/pluggable.php on line 1296PHP message: PHP Warning:  Cannot modify header information - headers already sent by (output started at /var/www/vhosts/247e/app/releases/20210116205801/web/app/themes//vendor/timber/timber/lib/Timber.php:411) in /var/www/vhosts/247e/app/releases/20210116205801/web/wp/wp-includes/pluggable.php on line 1299" while reading upstream, client: <IP_ADDRESS>, server: 247e, request: "GET /en/wp-json/api/orderCallback/?redirect_to=aHR0cHM6Ly8yND50L2hjaC15b3VyLXByZWNp=d331bde7e139fa18ca8c2f08f53df22befa3e9dc65975b6340ww/vhosts/system/-we/php-fpm.sock:", host: "247r.fre", referrer: "https://apps.hohoho.com/"

the error I get is
$ goaccess proxy_error_log.log -o proxy_error-report.html --log-format=COMBINED

==61488== GoAccess - Copyright (C) 2009-2020 by Gerardo Orellana
==61488== https://goaccess.io -<EMAIL_ADDRESS>==61488== Released under the MIT License.
==61488==
==61488== FILE: proxy_error_log.log
==61488==
Parsed 10 lines producing the following errors:
==61488==
==61488== Token '2021/01/17' doesn't match specifier '%h'
==61488== Token '2021/01/17' doesn't match specifier '%h'
==61488== Token '2021/01/17' doesn't match specifier '%h'
==61488== Token '2021/01/17' doesn't match specifier '%h'
==61488== Token '2021/01/17' doesn't match specifier '%h'
==61488== Token '2021/01/17' doesn't match specifier '%h'
==61488== Token '2021/01/17' doesn't match specifier '%h'
==61488== Token '2021/01/17' doesn't match specifier '%h'
==61488== Token '2021/01/17' doesn't match specifier '%h'
==61488== Token '2021/01/17' doesn't match specifier '%h'
==61488==
==61488== Format Errors - Verify your log/date/time format

where can i find some documentation or a kind of generator to create something like this?
: --log-format='[%^ %d %t.%^ %^] [%^] [%^] [%^ %h:%^] %^: %U, %^: %R' --time-format=%T --date-format='%b %d'

Hello - goaccess works mostly with access logs.

Hello - goaccess works mostly with access logs.

Good morning @koraysels.
Really, GoAccess works very well but with access logs.
Could error logs be handled?
Yes, if there is any regularity.
I.E. number of messages separated by quotes, client's IP position, code position or of error message.
But, if each error message has a pattern, it will be very difficult to make a template that covers all messages.
The option you would have is to make them a pattern using PERL, PYTHON, AWK or any tool you have mastered.
However, do you already have a clear view on what information you want to extract from these LOGs?
I hope it helped you.

Good morning @koraysels.
Really, GoAccess works very well but with access logs.
Could error logs be handled?
Yes, if there is any regularity.
I.E. number of messages separated by quotes, client's IP position, code position or of error message.
But, if each error message has a pattern, it will be very difficult to make a template that covers all messages.
The option you would have is to make them a pattern using PERL, PYTHON, AWK or any tool you have mastered.
However, do you already have a clear view on what information you want to extract from these LOGs?
I hope it helped you.

oh i see!
I was looking for a graphical representation of exceptions and errors like with the Access logs. But now I understand.
thanks for taking the time ;)

oh i see!
I was looking for a graphical representation of exceptions and errors like with the Access logs. But now I understand.
thanks for taking the time ;)


Upgrade repo to Go 1.18

This change is

Pull Request Test Coverage Report for Build 261

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 68.846%

Totals

Change from base Build 251:
0.0%

Covered Lines:
495

Relevant Lines:
719

💛  - Coveralls


Expo like tool for flutter

Hi folks, thank you for amazing flutter.
React native ecosystem has snack.expo.io and a companion Expo android/ios client where users can test the app on their actual device.
A similar thing for flutter would be awesome.
Considering the modular architecture of flutter, I hope it's doable and it would be an amazing tool for people to get started, experiment and share (kind of like a flutterbin (also considering humming bird, it would make a perfect UX as well)

/cc @timsneath
Maybe something like https://dartpad.dartlang.org for flutter.

This is a feature request, not an issue.

Something like this, in my opinion, would be amazing for Flutter. The only reason I am holding off on switching to Flutter from React Native is because I need to test stuff on an actual device, and I don't want to have to connect it to my computer and build it every single time. Would love to see somebody create an Expo-like solution for this problem.

Something like expo.io would be awesome.

This would fall inline with roadmap
"Making it easy to try Flutter without installing the full tooling and runtime stack"
Looking forward to hummingbird details, never have been so exciting times, a possible holy grail of development
https://events.google.com/io/schedule/events/03d8425c-54ca-437b-bac7-ece76cca8347
Hope there will also be an "one more thing" where you announce tooling to try flutter without installing it. Once again looking forward and good luck for #IO19

https://flutter.dev/docs/codelabs/layout-basics looks flutter support is in beta already great news :)

Expo is so cool and has a lot of SDK embeded. https://docs.expo.io/versions/latest/sdk/overview/ Otherwise, it has a complete CLI for you from dev to publish.

Please the flutter team brings this!!!

looking forward!!! expo is the only thing holding me with react native!

please flutter make it happen

If flutter had something like expo I would leave react-native in a second

expo.io in Flutter could be awesome

It will help a lot, if flutter app would run on real device using a service like expo.io directly

It will help a lot, if flutter app would run on real device using a service like expo.io directly

We've got something similar working internally. Hope one day we may open source

Guys open source that thing please 😊

Would really make me consider leaving react native.

I wish the same. Make it happen flutter team.

We really need this, will be awesome!!!

we need this, but now please, i mean now!!! its a must.

Hello everyone,
there is https://dartpad.dev/
(with limitations on installing external packages)

Would be great to have a tool similar to Expo in Flutter!

Any good news :?

i not see, you?

Any good news :?

i not see, you?

so still stick with React-native for now :D , because i usually create apps for clients and give them testing and fix quickly rather than submit to apple testfight.

Me and my team have to decide between React Native and Flutter for an upcoming project. And we're leaning towards React Native just because of Expo.

That's interesting, @GerritRRT. Curious to hear more about what makes Expo attractive in an active team project setting.
Are you talking about the managed workflow? Or Expo Go? Or something else?

Hi Tim,
https://expo.io/ + Expo Go. We’ve had a lot of situations where we develop on a VM and when we get it to Android and iOS and it doesn’t really work.
With Expo we don’t need Adroid Studio and Xcode to try the app on our device. If there is a way to do this easily with Flutter this would be very helpful as my team is used to writing in C# and would prefer to work with Dart over Javascript.
Best regards,
Gerrit
On Jun 8, 2021, 9:30 AM -0700, Tim Sneath @.***>, wrote:

That's interesting, @GerritRRT. Curious to hear more about what makes Expo attractive in an active team project setting.
Are you talking about the managed workflow? Or Expo Go? Or something else?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

I think you'll find that's a natural advantage of Flutter, in that we provide a very consistent platform across development and runtime. Because we paint every pixel and widget, you never run into issues where a control doesn't behave the same on the simulator as on the real device. And of course, stateful hot reload means that you build once and then can continue to develop your app while it's already running in the simulator.
My understanding of Expo Go, is that it's a great way to kickstart a RN project, but that it has some limitations in terms of what APIs you can use and adds about 15-20MB to your app. I mean no disrespect to that team, as I think they've done some amazing work to handle the limitations of the current mobile development experience. But I'd love to hear more from folk who are using Expo Go beyond the initial phase of an app, to see what we can learn and improve here.

the only thing that flutter needs right now ...

@timsneath I am a Flutter dev for about 3 years now. I really love everything about Flutter, but I really think Flutter or (dartpad) needs something like Expo. I have apps on the Playstore, but I don't have any on the App store. The only reason being that MacBook are crazy expensive. The cheapest you can get here in Nigeria is around 250,000 NGN (610 USD). But with something like Expo, you can test how your app will look and behave on all platforms and even build the app irrespective of the platform Linux, Windows or Mac. I think Expo can also handle release on the App store and Playstore. That's one of the reasons why I think Flutter needs something similar

Given Expo no longer supports publishing on iOS via url and simply recommends building via their hosted service, @Sectur1 you can basically do the same thing now with Flutter and a service like CodeMagic which also allows you to develop and publish iOS apps without a Mac. and of course Codemagic or other CI-CD's will allow you to build and publish to other platforms and stores as well.

Given Expo no longer supports publishing on iOS via url and simply recommends building via their hosted service, @Sectur1 you can basically do the same thing now with Flutter and a service like CodeMagic which also allows you to develop and publish iOS apps without a Mac. and of course Codemagic or other CI-CD's will allow you to build and publish to other platforms and stores as well.

Not exactly, eas will have a free tier eventually (its in preview right now) and I believe expo's ios uploading does still work, it's just deprecated.

Any good news ?

Coming from React-Native + Expo, and interested in Flutter development, this issue peeked my interest of course. However, Expo tooling is built around the concept of having 'static' native code, and a dynamic Javascript bundle (that doesn't require native compilation, so doesn't require XCode etc.). With the Flutter architecture being fundamentally different (Dart code being AoT compiled into native code, which it can't do without XCode), I see no easy way to apply the development experience you get with Expo for RN apps to Flutter apps.

Looking for good news about this topic

Yo flutter team we need this please make this happen and let us know the gd news ASAP .

We really need this

Any news?

👍

Yesss, we need flutter expo!!

Say something I'm giving up on you ..

Still waiting for this :-(

Come on guys we need this.

We actually do need this! I just can't wait for expo for flutter

up

It would be a great if we have it, please Flutter team, make a Flexpo!

SOMEONE, MAKE IT HAPPEN PLEASE.
Flutter with expo would be inevitable.

up

still waiting for something like this. anyone have anything similar that's working right now?

Let me also add my voice...
i use a low end pc, so i am not able to use an emulator. So a USB connection is required to test your app(ios/android(****** MacBook is expensive)).
but unfortunately somehow pc doesn't recognize My device and sometimes when it does, a small torch disconnects device from pc..... but with something like EXPO like for flutter,  i wont need to worry about USB connection or distancing my device from pc. HENCE I STILL AM AT REACTNATIVE................................................
hurry, we need it now.......

Need expo for flutter, it's a really cool feature.

need expo like for flutter

Please we really need this feature. It will be a game changer

🙏🙏🙏🙏🙏

still waiting

it will be much easier to build apps if we have tools like expo in flutter !

up

This feature will bring a lot of value to flutter, so we need this!

hell yea we need this !!!

As a windows/linux app developer one of the main problems for me is get a solution to work arround IOS, if something like expo Go exist for flutter, without doubt, will be the differentiating tool for this framework. Please bring this for us!

Up

up

Is there any tool like expo go for flutter? If there is not, build it. I think every one would come from that garbage called react native to flutter

I currently don't have access to a macbook and need to create an app with expo and react native. If flutter would have something similar, I'd change in an instant!

Uoppppp

expo allows you to build and test an app immediately without having to compile. they do some magic on their backend that allows the binary to be used without having to intermediately compile it. you just scan a qr code and the app is running in your logged in device. it's quite magical and would be a compelling feature for flutter. the only time you need to custom build is if you use some external or third party non-expo ready component but there are many expo ready components that they have already integrated. the expensive builds where you can code sign and deploy to the app stores are the ones that you pay for after the free tier. It's a very well crafted system and would be very compelling to have as a service for flutter.

@fiveNinePlusR there is no "magic". Expo simply has a prebuilt "starter" app to which they can code push whatever code your app has, because its all JS there is no compile step. This workflow is literally exactly what you get with the  Flutter development UX of hot-restart, where there is a compile step that gives you Dart's strong type safety and null-safety, with the Flutter tooling taking care of all of it for you.
To see this in action: just build the ubiquitous Flutter counter app in debug mode and run in it on your device of choice, then while it's running, replace the whole lib folder with the lib folder of your app code of choice, hot-restart and your new app code will be deployed into your running app. With a bit of imagination this workflow could be built out into a backend service similar to what Expo provides.
Note just as with Expo, the above will not work if you are using plugins which rely on native libs.

up

@all guys I have some solution for this. You can check out on my repo https://github.com/pratiksanyaja1998/flutter-wa-boilerplate
It's built in top of node.js

@ALL guys I have some solution for this. You can check out on my repo https://github.com/pratiksanyaja1998/flutter-wa-boilerplate
It's built in top of node.js

Can you details of how this works

@SOG-web, basically expo is used for whitelabel apps like single code with multiple different build. You can check inside index.js https://github.com/pratiksanyaja1998/flutter-wa-boilerplate/blob/main/index.js here is magic. I'm doing all step which is required for change bundle identifier.

In the past four years, many users have been kindly requesting Flutter to consider adding functionality similar to Expo. It appears that these requests have not received a response, leaving us uncertain about Flutter's stance on implementing such functionality. Could you please clarify whether there is an intention to implement this feature in the future, or if it's not within Flutter's current plans? Clear communication on this matter would be greatly appreciated, and it would help users make informed decisions about their development choices.

In the past four years, many users have been kindly requesting Flutter to consider adding functionality similar to Expo. It appears that these requests have not received a response, leaving us uncertain about Flutter's stance on implementing such functionality. Could you please clarify whether there is an intention to implement this feature in the future, or if it's not within Flutter's current plans? Clear communication on this matter would be greatly appreciated, and it would help users make informed decisions about their development choices.

Can you clarify what exactly the developer experience would look like with an "expo-like tool for Flutter"? I have never used expo, and from doing a little bit of reading it's unclear what functionality Expo provides that Flutter does not currently. Thank you.

Can explain what Expo-like experience I am missing: Developer can share with anyone who has Expo app installed on their phone: Expo Go

Can you explain in more detail how this would work? Is it streaming the UI over the internet? Would we need to stand up servers to do this?

Very convenient way to test your app on different real devices or show it to some customer etc. without publishing it to PlayStore or AppStore

You can do this with flutter install onto a real device, but I suppose you mean something else?
I genuinely want to understand, I have just found most of the explanations of Expo to be sparse on details, so I can't quite wrap my head around what it's doing.

@christopherfujino I'll try to chime in and help explain, though I'll prefix with saying the last time I used Expo was more than 4 years ago.
I believe what the "Expo Go" app gives people is a RN "shell app" that users can install on their device and then using a  proprietary Expo process the user can have the Expo backend do a code push to that app instance via scanning a QR code according to their docs.
Given especially the App Store policies:

3.3.2 Except as set forth in the next paragraph, an Application may not download or install
executable code. Interpreted code may only be used in an Application if all scripts, code and
interpreters are packaged in the Application and not downloaded. The only exceptions to the
foregoing are scripts and code downloaded and run by Apple's built-in WebKit framework or
JavascriptCore, provided that such scripts and code do not change the primary purpose of the
Application by providing features or functionality that are inconsistent with the intended and
advertised purpose of the Application as submitted to the App Store.

I'm not even sure how this is even allowed given the above restriction on "...change the primary purpose of the Application..." but hey I'm not a Apple appstore "curator" 🙄 so I have no idea if this would set a precedent that Flutter could make use of to ship a similiar app or if this is just a case of gross incompetence on their end for not enforcing their own policies.
But anyways @christopherfujino hope that helps explain how Expo works and what the previous comments were asking for.

@christopherfujino I'll try to chime in and help explain, though I'll prefix with saying the last time I used Expo was more than 4 years ago.
I believe what the "Expo Go" app gives people is a RN "shell app" that users can install on their device and then using a proprietary Expo process the user can have the Expo backend do a code push to that app instance via scanning a QR code according to their docs. Given especially the App Store policies:

3.3.2 Except as set forth in the next paragraph, an Application may not download or install
executable code. Interpreted code may only be used in an Application if all scripts, code and
interpreters are packaged in the Application and not downloaded. The only exceptions to the
foregoing are scripts and code downloaded and run by Apple's built-in WebKit framework or
JavascriptCore, provided that such scripts and code do not change the primary purpose of the
Application by providing features or functionality that are inconsistent with the intended and
advertised purpose of the Application as submitted to the App Store.

I'm not even sure how this is even allowed given the above restriction on "...change the primary purpose of the Application..." but hey I'm not a Apple appstore "curator" 🙄 so I have no idea if this would set a precedent that Flutter could make use of to ship a similiar app or if this is just a case of gross incompetence on their end for not enforcing their own policies.
But anyways @christopherfujino hope that helps explain how Expo works and what the previous comments were asking for.

@maks, thanks so much for this explanation! It sounds like this is blocked by https://github.com/flutter/flutter/issues/14330.

Any solution for this?

Anyone found a solution yet?


Not getting SignalR events , whenever app enters background.

I have integrated the signalR IOS client version 1.0.1 and at server I am using "Microsoft ASP.NET SignalR Client 1.0.0-rc1" . Deployment target is ios 6 .

duplicate using #219


[YUNIKORN-2663] Improve ACL struct funtion's test coverage

What is this PR for?
Remove unreachable code in NewACL func
Improve the following funtion's test coverage in acl.go

TestSetUsers
TestSetGroups

What type of PR is it?

[x] - Test

What is the Jira issue?
https://issues.apache.org/jira/browse/YUNIKORN-2663

However, due to strings.Split, which results in an array with a length of at least 1, the following two scenarios are unreachable.

Then just simply remove the if branch. In fact, even if an empty slice is passed, we do very little extra work, so nothing happens. This is not hot code, so just go ahead and remove the path which is never taken. This also increases coverage in %. In both functions, the early return is an unnecessary optimization.

Then just simply remove the if branch. In fact, even if an empty slice is passed, we do very little extra work, so nothing happens. This is not hot code, so just go ahead and remove the path which is never taken. This also increases coverage in %. In both functions, the early return is an unnecessary optimization.

Sure, not performing the empty list check will not affect the current logic.


Loosing SCM history when entering "workspace mode"

Testing #109428

open a simple folder
use SCM and have some history
add another folder so that the workbench is now in workspace mode
make another change for the initial folders
🐛 the SCM history is gone

I wonder if we should just store this data in global storage then, since we always scope it to the SCM repo, in the storage key. What do you think @meganrogge?

Seems like there's still some oddness here. If I open a folder, make some commits, then run add folder to workspace, I loose the history that I created in the single folder case. Perhaps e.reason === WillSaveStateReason.SHUTDOWN is not true in the add folder to workspace case, as it's a reload?

Seems like there's still some oddness here. If I open a folder, make some commits, then run add folder to workspace, I lose the history that I created in the single folder case. Perhaps e.reason === WillSaveStateReason.SHUTDOWN is not true in the add folder to workspace case, as it's a reload?

Yes exactly. This  fixes that


Allow specifying a custom GitLab URL for non-hosted instances

Description
Creates a config item in the auth page to allow for a user to specify a private GitLab instance.

Checklist
Please ensure that each of these items has been addressed:

[x] I have tested these changes in my local environment
[x] I have added/modified tests as applicable to cover these changes
[ ] (Atlassian contributors only) I have removed any Atlassian-internal changes including internal modules, references to internal tickets, and internal wiki links

Closes #8

One outstanding item is accounting for an internal instance in the manifest.yml. Any pointers on how to handle that?
I was tempted to add a storage lookup of the GitLab URL variable in the GitLab client, but followed convention of the group token by passing the variable around. I'm open to doing this differently if you have any suggestions.

Hey @nextrevision, I'm Josh, a product manager on Compass, nice to meet ya 👋  Wow thanks a ton for raising this PR! 🙇♂  Someone from the team will jump in here soon to help out but I wanted to at least acknowledge the PR.

Hey there @nextrevision ! I’m an engineer on Compass reviewing this PR and I first want to say that this is an amazing contribution! Thanks a lot for all your hard work in making these changes. Self-managed instance support for Gitlab would be a great improvement and we are very interested in making this a reality for customers.
As you mentioned, there is an outstanding item with accounting for an internal instance in the manifest.yml. One way to address this would be to allowlist all external domains with a wildcard matcher https://developer.atlassian.com/platform/forge/manifest-reference/permissions/#valid-domain-formats. However, there may be security concerns about this from customers, so we are currently exploring additional ways to maintain a Compass Gitlab app that is compatible with self-managed instances.
If you would like to get started with your self-managed Gitlab instance and you haven’t already done so, I would suggest forking this repository with your changes and using the app that you have created for now.
Appreciate your patience on this, and thanks again for your contributions!

@erica-zhong Hey Erica, any news regarding this feature ? I just discovered compass and was eager to try it but I realized that it didn't support self-hosted (misread the documentation :( ).

Is there any news?

Yes, @Badzyo there are some Forge changes to enable custom egress permissions per domain, coming early 2025, that would unblock an approach similar to what is proposed in this pull request.
But worth also mentioning that Compass has added some support for self-hosted GitLab instances since this code was originally proposed, in the shape of:

Incoming webhooks as described in https://developer.atlassian.com/cloud/compass/components/create-incoming-webhooks/
Repository-to-component import scripts available in https://github.com/atlassian-labs/compass-examples/tree/main/snippets/scripts/compass-gitlab-importer

Yes, @Badzyo there are some Forge changes to enable custom egress permissions per domain, coming early 2025, that would unblock an approach similar to what is proposed in this pull request.
But worth also mentioning that Compass has added some support for self-hosted GitLab instances since this code was originally proposed, in the shape of:

Incoming webhooks as described in https://developer.atlassian.com/cloud/compass/components/create-incoming-webhooks/
Repository-to-component import scripts available in https://github.com/atlassian-labs/compass-examples/tree/main/snippets/scripts/compass-gitlab-importer

@eserranovalle thank you for the import script! You made my day a lot easier.


Solicitud de incorporación

@M4HR First stage of verification passed, official domain for KSPERU is ksperu.com as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.


chore: remove the (now deprecated) prettier plugin from README

Reason for change
Prettier plugin solidity is no longer used because instead of are formatting Solidity files with forge fmt as set by a VSCode extension or run from CLI. Prettier is now only used standalone for md,yml,json.

Good catch, thanks for the PR.


elan: add proofwidget

Please merge https://github.com/sjtug/mirror-clone/pull/127 and release a new version before merge this PR.

@PhotonQuantum


'vpn' is hard-coded in Dockerfile CMD

The environmental variable NETWORK=${NETWORK_NAME:-vpn} loads in entrypoint.sh; however, 'vpn' is hard-coded in the last line of Dockerfile.

Env. NETWORK can be set at the beginning of Dockerfile, right after the FROM statement.
FROM alpine:3.12
ENV NETWORK=vpn
RUN apk add --no-cache tinc-pre
...

https://docs.docker.com/engine/reference/builder/#env

This value will be in the environment for all subsequent instructions in the build stage and can be replaced inline in many as well.

I think that by setting ENV NETWORK=vpn in the Dockerfile it does not need to be set in entrypoint.sh but I am not certain.

I have already forgotten about this repo :-) I do have an updated version of the code, will commit it tomorrow.
As far as I remember, the issue was that the shell version of CMD did not allow for shell expansion. It is still possible to pass -n my-custom-network-name in arguments to docker run.

Done, please take a look

Just from looking at it, that looks great. This seems to be a great way to run tinc in docker. Thanks for committing that latest patch.


[Bug]: Machine user creation sometimes fails with user already exists message

Preflight Checklist

[X] I could not find a solution in the documentation, the existing issues or discussions
[X] I have joined the ZITADEL chat

Environment
ZITADEL Cloud
Describe the bug
When creating a machine user using the AddMachineUser request, the request fails with the following error message:
AddMachineUser: rpc error: code = AlreadyExists desc = User already exists (SQL-M0dsf)
I made sure that no machine user existed in the organization for which I want to create the machine user.
In our case, we use the same username for our machine users across organizations, so maybe when trying to create a new machine user in an org which does not have any machine users, there might be a clash because of the name.
To reproduce
Unfortunately, we could not reproduce this bug consistently, however, it might make sense to try and create machine users with the same name in different orgs and see if it fails. The request did not fail when sending the same request the second time.
Screenshots
No response
Expected behavior
The machine user should be created
Version
2.21.2
Operating System
No response
Relevant Configuration
No response
Additional Context
No response

Hei @demircis
Thanks for the report.
Usernames have to be unique within the whole system.
If there is no way around the unique names, you would have to enable the domain suffix for the usernames, In that case ZITADEL suffixes all usernames with the domain so it is unique over the whole system. Be aware that this affects also normal users and not only machine accounts.

I will close this issue as the answer is state above, feel free to reopen, if you have more information


How can export select xls

Please prefix your issue with one of the following: [BUG] [PROPOSAL] [QUESTION].
"maatwebsite/excel": "~2.1.0", "laravel/framework": "5.5.*",
I want export a select xls like this

but I not find how to do it.
have someone tell me i should do it

please have some one can tell me how I can do it