Conditional Project References - is this possible?

In the old style msbuild project files, you could add a conditional reference (to an assembly or project) based upon the current build configuration.
Can this be done in project.json?
For example, I need to add a dependency to another project in the solution  but only when in "Debug" mode.

"dependencies": {
   // I only want this when in Debug build configuration!
    "MyModuleProject": "1.0.0-*"
  },

The reason for this is because my Application is Modular, and in release mode, these projects actually get installed as seperate extensions at runtime, however in Debug mode, its useful for them to be project references so that they are all loaded up by the application automatically and you get a nice familiar debugging experience, without having to go through a module install process.

I only see this issue in your very specific scenario of loading plugins/dlls after the first project load.
I would check into having custom script that drops your plugins at the right place.
Before this can be considered a feature, is there other scenarios where this would work? What happens when (while developing) somebody uses a class from that module (it doesn't compile in "release" anymore)?
That brings a whole lot more of complexity to a simple build.
For your scenario, I would think about creating a gulp/grunt task that will copy your files at the right place and it would work beautifully.

You can do this with a compile module. I am not sure if complie modules will stick around after the dotnet CLI replacement though.

@tugberkugurlu  - that sounds good but I have not heard of a Compile Module before. Any chance you could point me towards some docs?

@tugberkugurlu - So I have a simple Compile Module and I am guessing what I need to do, BeforeCompile add the additional project references, when the Current Configuration is Debug.
I have browsed through the public API but I am struggling to figure out how to add a project reference to the "BeforeCompileContext".
Can anyone suggest whether that is possible, and how to do so?

public class CompileModule : ICompileModule
    {
        public void BeforeCompile(BeforeCompileContext context)
        {
            var config = context.ProjectContext.Configuration;
            if (config.ToLowerInvariant() == "debug")
            {
                var currentProjectDir = context.ProjectContext.ProjectDirectory;

                // In order to add a project reference, I am not sure whether I need a path to the dll, the nupkg, or the project.json file of th other project?
                var otherProjectPath = System.IO.Path.Combine(currentProjectDir, "..\\MyOtherProject\\MyOtherProject.json");
                context.Compilation.?? // how to add?

            }

        }

        public void AfterCompile(AfterCompileContext context)
        {

        }
    }

@MaximRouiller - I have considered the custom script that drops the plugin assemblies in the right location but that would be problematic from a debugging perspective, as I think you will loose "edit and continue" whilst debugging. For example, with a project reference, you can directly edit the code whilst debugging, and use the edit and continue functionality. With the custom script approach, I'd have to run the script after every change to the code and wait for it to copy the assembly over, and then have logic to "restart" my application - in order to reload the new assembly which is problematic as that will terminate the debugging session also. This can all be avoided if we could have a conditional project reference.

This issue is being closed because it has not been updated in 3 months.
We apologize if this causes any inconvenience. We ask that if you are still encountering this issue, please log a new issue with updated information and we will investigate.


steam-achievement-manager-syntaxtm: Add version 0.6.0

The zip filename changed, so the automatic updater didn't update. Also changed how it shows up on the start menu

[x] I have read the Contributing Guide.

@Calinou could the original steam achievement manager be considered for deprecation in favor of this one? This is practically just modern SAM that shouldn't have issues with modern windows in the long run

could the original steam achievement manager be considered for deprecation in favor of this one?

That makes sense. Feel free to open a separate PR for this.


[Introspection] "The model 'x' cannot be defined because a model with that name already exists."

Error message:
error: The model 'CampaignDraft' cannot be defined because a model with that name already exists.   -->  schema.prisma:1895

Schema:
https://github.com/prisma/introspection-engine-output/blob/8e75a5342e388bc4b7eb8220976af011484422aa/prisma1-old/email-jesper-madsen%40dev.log#L207-L261
model CampaignDraft {
  audienceType                              String?
  autoApproveInfluencerOrdersInTargetGroup  Boolean?
  captionSpecifics                          String?
  createdAt                                 DateTime
  defaultCaption                            String?
  description                               String?
  endDate                                   DateTime?
  giftDescription                           String?
  id                                        String                                     @id
  isGlobal                                  Boolean
  maximumAge                                Int?
  minimumAge                                Int?
  minimumInstagramFollowers                 Int?
  numberOfPostsPerInfluencer                Int?
  postIntervalEnd                           DateTime?
  postIntervalStart                         DateTime?
  radiusInMeters                            Int?
  showInSubmissionAppFeed                   Boolean?
  startDate                                 DateTime?
  subtitle                                  String?
  targetNumberOfInfluencers                 Int?
  title                                     String?
  updatedAt                                 DateTime
  version                                   Int
  visibleBeforeStartDate                    Boolean?
  weight                                    Float?
  campaignDraft_defaultAccountTagses        CampaignDraft_defaultAccountTags[]         @relation(references: [nodeId])
  campaignDraft_defaultHashtagses           CampaignDraft_defaultHashtags[]            @relation(references: [nodeId])
  campaignDraft_dontses                     CampaignDraft_donts[]                      @relation(references: [nodeId])
  campaignDraft_doses                       CampaignDraft_dos[]                        @relation(references: [nodeId])
  campaignDraft_genderses                   CampaignDraft_genders[]                    @relation(references: [nodeId])
  campaignDraft_postMedias                  CampaignDraft_postMedia[]                  @relation(references: [nodeId])
  campaignDraft_postReminderDateses         CampaignDraft_postReminderDates[]          @relation(references: [nodeId])
  campaignDraft_requiredDisclaimerses       CampaignDraft_requiredDisclaimers[]        @relation(references: [nodeId])
  CampaignDraftAudienceInterests            CampaignDraftAudienceInterest[]            @map("_CampaignDraftAudienceInterests") @relation("CampaignDraftTo_CampaignDraftAudienceInterest", references: [A])
  CampaignDraftAuthors                      CampaignDraftAuthor[]                      @map("_CampaignDraftAuthors") @relation("CampaignDraftTo_CampaignDraftAuthor", references: [A])
  CampaignDraftCampaignAddresses            CampaignDraftCampaignAddress[]             @map("_CampaignDraftCampaignAddresses") @relation("CampaignDraftTo_CampaignDraftCampaignAddress", references: [B])
  CampaignDraftCampaignObjectives           CampaignDraftCampaignObjective[]           @map("_CampaignDraftCampaignObjectives") @relation("CampaignDraftTo_CampaignDraftCampaignObjective", references: [A])
  CampaignDraftCompanies                    CampaignDraftCompany[]                     @map("_CampaignDraftCompanies") @relation("CampaignDraftTo_CampaignDraftCompany", references: [A])
  CampaignDraftCompanyLogoes                CampaignDraftCompanyLogo[]                 @map("_CampaignDraftCompanyLogoes") @relation("CampaignDraftTo_CampaignDraftCompanyLogo", references: [A])
  CampaignDraftCompanyRepulsions            CampaignDraftCompanyRepulsion[]            @map("_CampaignDraftCompanyRepulsions") @relation("CampaignDraftTo_CampaignDraftCompanyRepulsion", references: [A])
  CampaignDraftCoverImages                  CampaignDraftCoverImage[]                  @map("_CampaignDraftCoverImages") @relation("CampaignDraftTo_CampaignDraftCoverImage", references: [A])
  CampaignDraftExternalLinkses              CampaignDraftExternalLinks[]               @map("_CampaignDraftExternalLinkses") @relation("CampaignDraftTo_CampaignDraftExternalLinks", references: [A])
  CampaignDraftInterestRatingCampaignDrafts CampaignDraftInterestRatingCampaignDraft[] @map("_CampaignDraftInterestRatingCampaignDrafts") @relation("CampaignDraftTo_CampaignDraftInterestRatingCampaignDraft", references: [A])
  CampaignDraftInterestRepulsions           CampaignDraftInterestRepulsion[]           @map("_CampaignDraftInterestRepulsions") @relation("CampaignDraftTo_CampaignDraftInterestRepulsion", references: [A])
  CampaignDraftMetaRelations                CampaignDraftMetaRelation[]                @map("_CampaignDraftMetaRelations") @relation("CampaignDraftTo_CampaignDraftMetaRelation", references: [A])
  CampaignDraftPrimaryInterests             CampaignDraftPrimaryInterest[]             @map("_CampaignDraftPrimaryInterests") @relation("CampaignDraftTo_CampaignDraftPrimaryInterest", references: [A])
  CampaignDraftProductFeedbacks             CampaignDraftProductFeedback[]             @map("_CampaignDraftProductFeedbacks") @relation("CampaignDraftTo_CampaignDraftProductFeedback", references: [A])
  CampaignDraftSelectedInfluencers          CampaignDraftSelectedInfluencer[]          @map("_CampaignDraftSelectedInfluencers") @relation("CampaignDraftTo_CampaignDraftSelectedInfluencer", references: [A])
  CampaignDraftSubmissionPrices             CampaignDraftSubmissionPrice[]             @map("_CampaignDraftSubmissionPrices") @relation("CampaignDraftTo_CampaignDraftSubmissionPrice", references: [A])
  CampaignDraftSubmissionRewards            CampaignDraftSubmissionReward[]            @map("_CampaignDraftSubmissionRewards") @relation("CampaignDraftTo_CampaignDraftSubmissionReward", references: [A])
  InspirationImageOnCampaignDrafts          InspirationImageOnCampaignDraft[]          @map("_InspirationImageOnCampaignDrafts") @relation("CampaignDraftTo_InspirationImageOnCampaignDraft", references: [A])
  WatermarkImageOnCampaignDrafts            WatermarkImageOnCampaignDraft[]            @map("_WatermarkImageOnCampaignDrafts") @relation("CampaignDraftTo_WatermarkImageOnCampaignDraft", references: [A])
}

https://github.com/prisma/introspection-engine-output/blob/8e75a5342e388bc4b7eb8220976af011484422aa/prisma1-old/email-jesper-madsen%40dev.log#L1898-L1906
model CampaignDraft {
  id String            @id
  A  Campaign          @relation("CampaignTo_CampaignDraft")
  B  CampaignDraftMeta @relation("CampaignDraftMetaTo_CampaignDraft")

  @@index([B], name: "B")
  @@map("_CampaignDraft")
  @@unique([A, B], name: "CampaignDraft_AB_unique")
}

Original tables are called _CampaignDraft and CampaignDraft. THe former one needs to be renamed because starting with _ is not allowed, so   @@map("_CampaignDraft") rewrites that. That code does not seem to take into account that it could create duplicates - so we need some logic to check and work around that.

Needs decision: How to disambiguate these? How to name the second one?

DECISION: comment out the model

Parent decision: https://github.com/prisma/prisma2/issues/1520#issuecomment-581990070

More context, this happens on Prisma 1 self relations. The table holding the relation has the name _Model.

This is solved 🚀


Colored output for dotnet test

dotnet test should print colored output on the console.
Proposal:

Warnings - yellow
Failed tests, Stacktraces - red
Summary - green if run is successful, red otherwise.

Fixed in: 85b615b4c7d209e4696100d699725ee42baf8ea2


sia 1.2.1 - Could not resize folder: unable to migrate all sectors

It all started with me having a RAID1 BTRFS raid setup, I thought (wrongly) that I would have at least 3.6TB for the Sia Hosting folder.
But when I upgraded to Sia 1.2.1, and Sia converted the old 'many files' to one huge file and a small one. The BTRFS showed its stubbornness and stopped working correctly with a Sia data file of about 3.2TB
Absolutely no more space on the BRTFS raid1, I could not convert the raid1 to a single either. No more space I was told by BTRFS.
So I borrowed some external hdd's setup a single (JBOD) BTRFS and got the 3.2TB file moved from the original raid1.
I then converted my original raid1 to single (JBOD) plus added bigger and more hdds to the array.
I then copy'ed back the 2 Sia host files. So far so good.
at this point, siad seems to be working fine, receiving contracts, and data is being added now to the siad host.
And now the trouble begins, when I try to resize the sia share folder with the command:
./siac host folder resize /media/sia-hosting 2500GB
I get this reply after a while:
Could not resize folder: unable to migrate all sectors
But according to:
./siac host -v
There is only some 485GB in use of the 3.6TB share. And the disk space available should be plenty to make a resized copy of the 2 sia host files at a size of 2500GB
So to recap, skewed up, thought I had 3.6TB for a Sia host folder, doing conversion that came with Sia 1.2.1 my BTRFS filesystem filled up with a 'incomplete' (I assume) 3.2TB file, it should have been 3.6TB as far as I know. But not enough space to make it that big.
Can now not resize the 3.2TB file to a 2.5TB file due to the error:
Could not resize folder: unable to migrate all sectors
If you need logs, let me know what you need if you want to look into this.

same problem:

from 2TB to 1TB (63GB used)

You need empty storage folders when downsizing a storage folder.

@DavidVorick ah okay :)
Can you help me with what the command would look like then?
Right now I have:
./siac host folder resize /media/sia-hosting 2500GB
Thank you in advance!

You need to add an additional folder with probably a hundred gb or so to collect spillover. Then you can remove it.
Sia doesn't currently support shrinking a single storage folder. We will add it soon, but the code to do so was non-trivial

@DavidVorick Thank you! I will close this now :-D

Just to add a little doc for those who may need to do the same.
I had a 5GB allowance in a STORAGE folder. Less than 1GB was used.
I wanted to reduce to 4GB and successfully did the following:
mkdir STORAGE01
mkdir STORAGE02
./siac host folder add ./STORAGE01 2GB      // ensure the size you pick here is more than the amount of data you currently store for your users
./siac host folder remove ./STORAGE
./siac host folder add ./STORAGE02 2GB


Shell special characters tilde and caret on international keyboards

Having a look through the various ways of remapping keys with Karabiner-Elements,
I don't see an easy way to fix the international keyboard keys to make programs like iTerm and Terminal work as expected for the tilde and caret characters.
Int'l keyboard gives this:
ls ˜  # ls [not-a-tilde U+02DC]
ls | egrep â   # ls [pipe] egrep [not-a-caret U+02C6] a
X=àppinfo`   # X= [backtick] appinfo [backtick]
ls á *'    # ls [single quote] a [space] [single quote]
ls ä *"    # ls [double quote] a [space] [double quote]
Expected in a shell
ls ~
ls | egrep ^a
X=appinfo
ls 'a *'
ls "a *"
If these complex remappings were available here: https://pqrs.org/osx/karabiner/complex_modifications/#key_specific
That would be great.
If there is a way to do this with the current release, I'm sorry for raising this, could uses some guidance on how to configure it.

Solved the problem by changing the keyboard type to UK or US without international settings.


chore: bdd-sbhg-import-1583313814 to 0.0.1

chore: Promote bdd-sbhg-import-1583313814 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, 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.
The pull request process is described 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


Remove tab

explorer usability improvements from early user feedback

Coverage remained the same at 97.183% when pulling 2ab5466e5c964520b77af7f75a89958c74e636cf on marqh:remove_tab into ea3f3caffd48c189b42daa54ac52aca9f9c1af72 on SciTools:master.

@bjlittle if you have the space, please may you take a look at this and consider advice on how I can make it merge ready?

Coverage remained the same at 97.183% when pulling 7a16c4b6c5b65e49cfca70624c6af52b07d74e95 on marqh:remove_tab into ea3f3caffd48c189b42daa54ac52aca9f9c1af72 on SciTools:master.


Linux ARM builds

Can we have linux ARMv7 builds too please? Very useful for running on low power boards like RPi and such. Thanks!

Why not build your own with a cross-platform compiler?

actually, you can build your own arm binaries easily:
GOOS=linux GOARCH=arm64 go build -o siad-arm ./siad
GOOS=linux GOARCH=arm64 go build -o siac-arm ./siac

Ah, and building the dependencies is no issue?

correct, you just need to run go get -u github.com/NebulousLabs/Sia/... as indicated in the README first.

Very awesome.
I don't know a whole lot about Go, but is there MIPS support? Is there Sia-specific assembly written or none?

There is no Sia-specific assembly written. The Go compiler supports mips64 and mips64le as build targets (GOARCH)

Closing for now. We can make a serious effort to get Sia compiling on ARM if there's enough interest+resources to do so.

At the moment siad easily consumes 2-3 GB of RAM during blockchain catching up. There are too few consumer ARM devices that can handle that :(

An arm64 version would be great!
FYI, storj runs on a Raspberry Pi:
https://docs.storj.io/v1.1/docs/setting-up-storj-share-on-a-raspberry-pi


The --dns-search argument appears multiple times

Before the code would output a Ruby Array in the Array syntax, so something like:
docker -d ... --dns-search=["custom.domain.com"] ...

The Array delimiters wasn't the right format for the --dns-search argument and the docker daemon would not start correctly. The daemon expects the --dns-search argument once per domain.
I've tested this on a local test-kitchen run in our wrapper cookbook and the daemon starts correctly :smile:

The build fails but the files aren't the ones I touched.

Hello!
Thanks for the PR... this has been fixed up in master and addresses #346
closing!
-s

Awesome thank you!


[FEAT] Handle all up flags as role variables

We're up to 3 or so exceptions to tailscale_args, where some flags are handled by dedicated variables in this role and most are not. This is confusing behavior. Originally, tailscale_args was set up this way because the Tailscale CLI was new and undergoing rapid development and there wasn't a guarantee that flags would be stable. This is no longer the case, and supporting all flags as arguments to this role would simplify usage and "Ansible-ize" the rest of the parameters.
Edit July 2024, starting on this:
Please comment on this issue and get sign-off from @artis3n before making PRs for any of these flags. I have an idea how I want this to work and I welcome contributions for it, but I don't want you to waste effort!
Flags that will become input variables to this role:

[ ] --accept-dns. Possible values: true/false
[ ] --accept-risk. Possible values: "lose-ssh", "all", or ""
[ ] --advertise-exit-node. Possible values: true/false
[ ] --advertise-routes. Values will be a list<string> and each input will be validated as valid CIDR syntax.
[ ] --advertise-tags. Values will be a list<string>.
[x] --authkey. Already a dedicated variable.
[ ] --exit-node. Value will be a string, and can be an empty string to disable a previously set configuration.
[ ] --exit-node-allow-lan-access. Possible values: true/false
[ ] --force-reauth. Possible values: true/false
[ ] --hostname. Value will be a string.
[ ] --login-server. Value will be a string.
[ ] --netfilter-mode. Possible values: "off", "nodivert", "on".
[ ] --operator. Value will be a string. Value must be an existing Linux user on the target, or the role will fail.
[ ] --qr. Won't be supported by this role.
[ ] --reset. Possible values: true/false
[ ] --shields-up. Possible values: true/false
[ ] --snat-subnet-routes. Possible values: true/false
[ ] --stateful-filtering. Possible values: true/false
[ ] --ssh. Possible values: true/false
[ ] --timeout. Value will be an integer representing time in seconds.
[ ] --unattended. Windows-only, so won't be supported by this role.

Going to start thinking about this more actively. Collected current list of flags from https://tailscale.com/kb/1241/tailscale-up in the description.

This will happen after this role is rewritten into a collection


Quote yield as it's a reserved keyword in strict mode.

Hey,
Android 4.0 fails when using yield in strict mode.
This resolves the issue.

Thank you for your pull request!

Android 4.0 fails when using yield in strict mode.

WOW! That's a really odd behaviour ... would you mind adding a comment above the change to explain why this particular property is quoted, preferable with a url for further reading?

@mroderick Sure :)
es5 strict mode reserves es6 keywords: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode#Paving_the_way_for_future_ECMAScript_versions.
I'm currently developing https://github.com/ngryman/simulator and testing it with saucelabs. Everything was fine on every browser of my grid, except for Android 4.0 precisely (>= 4.0 work fine).
Here is my failing test: https://saucelabs.com/tests/8b03a25aad8a4e249ede19e734ed79c4.
When diving on Browserstack and showing the JavaScript console, there was the following message: yield: Unexpected Strict mode reserved word.
My patch did fix the error, and now everything works fine.
Other seem to have the same issue, it seems that it is a strange behavior of 4.0 stock browser:

https://groups.google.com/forum/#!topic/cujojs/K8YHOX7Up3Y
https://github.com/angular/angular.js/issues/7969

es5 strict mode reserves es6 keywords: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode#Paving_the_way_for_future_ECMAScript_versions.

I meant add it to your commit, so future readers won't "tidy up" the file :)

Hm, I remember putting this change in quite some time ago. Must have been lost on the way ...

@mroderick Done :)

Thank you!


How to configure listOfServers for foo-service?

Without hyphen in service-id the configuration works well.
But with hyphen in service-id the configuration does not find the service-id.
bootstrap.yml:
foo-service:
  ribbon:
    listOfServers: http://localhost:9999

error:
Caused by: org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name 'foo-service.FeignClientSpecification' defined in null

So, how to configure listOfServers for foo-service?

I have services with hyphen e.g user-service name with which it is registered on discovery server. I am using properties file instead of yml but this should not make any difference.
user-service.ribbon.listOfServers=http://localhost:9999

Straight out of the Spring.io/guides for Ribbon. To hardcode them in :

Service-name:
ribbon:
eureka:
enabled: false
listOfServers: localhost:8090,localhost:9092,localhost:9999


(0 , _stampUtils.compose) is not a function

I've cloned your repo and installed node-modules. WHen I run npm test I get the following error.
TypeError: (0 , _stampUtils.compose) is not a function     at Object.<anonymous> (/Users/juliogt/Projects/Training/JS_Training/JS_EricElliot/composition-examples/examples/stamp-compose/index.js:19:22)     at Module._compile (internal/modules/cjs/loader.js:678:30)     at normalLoader (/Users/juliogt/Projects/Training/JS_Training/JS_EricElliot/composition-examples/node_modules/babel-core/lib/api/register/node.js:199:5)     at Object.require.extensions.(anonymous function) [as .js] (/Users/juliogt/Projects/Training/JS_Training/JS_EricElliot/composition-examples/node_modules/babel-core/lib/api/register/node.js:216:7)     at Module.load (internal/modules/cjs/loader.js:589:32)     at tryModuleLoad (internal/modules/cjs/loader.js:528:12)     at Function.Module._load (internal/modules/cjs/loader.js:520:3)     at Module.require (internal/modules/cjs/loader.js:626:17)     at require (internal/modules/cjs/helpers.js:20:18)     at Object.<anonymous> (/Users/juliogt/Projects/Training/JS_Training/JS_EricElliot/composition-examples/test/stamp-compose/index.js:1:24)

Interesting. Try again. I've updated package.json to use the exact version that it was created with, and it worked for me:
git clone git@github.com:learn-javascript-courses/composition-examples.git
cd composition-examples
npm install && npm run test

Produced the following output:
npm WARN deprecated<EMAIL_ADDRESS>Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue

><EMAIL_ADDRESS>install /Users/eric/Dropbox/dev/composition-examples/node_modules/fsevents
> node install

[fsevents] Success: "/Users/eric/Dropbox/dev/composition-examples/node_modules/fsevents/lib/binding/Release/node-v57-darwin-x64/fse.node" already installed
Pass --update-binary to reinstall or --build-from-source to recompile
npm notice created a lockfile as package-lock.json. You should commit this file.
added 512 packages from 294 contributors and audited 1911 packages in 18.966s
found 13 vulnerabilities (7 low, 6 high)
  run `npm audit fix` to fix them, or `npm audit` for details

><EMAIL_ADDRESS>test /Users/eric/Dropbox/dev/composition-examples
> babel-node test/index.js

TAP version 13
# shape()
# ...with prototype
ok 1 should reflect changes to the prototype
# ...with prototype
ok 2 local changes should not alter prototype
# highPass.filter()
# ...with n > 5
ok 3 should return true for values above cutoff
# ...with n < 5
ok 4 should return false for values below cutoff
# GuitarAmp
ok 5 should have volume, distortion, cabinet, and .apply()
# BassAmp
ok 6 should have volume, lowCut, cabinet, and .apply()
# GuitarAmp
ok 7 should have distortion, volume, cabinet and apply()
# BassAmp
ok 8 should have volume, lowCut, cabinet and apply()
# ChannelStrip
ok 9 should have inputLevel, lowCut, volume, and apply()
# filter.highPass()
# ...with n > cutoff
ok 10 should return true for values above cutoff
# ...with n < cutoff
ok 11 should return false for values below cutoff
# filter.lowPass()
# ...with n > cutoff
ok 12 should return false for values above cutoff
# ...with n < cutoff
ok 13 should return true for values below cutoff
# simple factory encapsulation filter.highPass()
# ...with n < highPassCutoff
ok 14 should return false for values below highPassCutoff
# ...with n > highPassCutoff
ok 15 should return true for values above highPassCutoff
# simple factory encapsulation filter.lowPass()
# ...with n < lowPassCutoff
ok 16 should return true for values below lowPassCutoff
# ...with n > lowPassCutoff
ok 17 should return false for values above lowPassCutoff
# simple compose filter.highPass()
# ...with n > cutoff
ok 18 should return true for values above cutoff
# ...with n < cutoff
ok 19 should return false for values below cutoff
# simple compose filter.lowPass()
# ...with n > cutoff
ok 20 should return false for values above cutoff
# ...with n < cutoff
ok 21 should return true for values below cutoff
# stamp compose filter.highPass()
# ...with n > cutoff
ok 22 should return true for values above cutoff
# ...with n < cutoff
ok 23 should return false for values below cutoff
# stamp compose filter.lowPass()
# ...with n > cutoff
ok 24 should return false for values above cutoff
# ...with n < cutoff
ok 25 should return true for values below cutoff

1..25
# tests 25
# pass  25

# ok

Closing because it seems to work. Reopen if you still need help.


Modifier -> SwiftUI -> Environment values: transformEnvironment(_:transform:)

Doc: https://developer.apple.com/documentation/swiftui/view/transformenvironment(_:transform:)

[ ] Swift implementation
[ ] Elixir implementation

We won't support this one


File Upload

Still Working on it, there is an issue with the autorization so I am waiting for a response from Hadi

The functional tests are not passing yet


[2.0.4] Dark Robe clips with outer skin layer

Using version 2.0.4 for 1.19.2, when worn the dark robe clips with the outer skin layer, as shown here.

Adjusted and fixed in 2.0.5!


Check functionality with all kind of user extensions

I suggest that we test the correct concatenation of all kind of user extensions that can appear as part of an EPCIS event. For that purpose, I prepared an EPCIS event which IMO should illustrate all areas in which it is possible to insert user extensions, see #12 in https://github.com/gs1/EPCIS/blob/master/XSD/SensorDataExamples.xml:

As part of the error declaration element
As part of readPoint/bizLocation
As an ordinary event-level extension
As part of the sensorElement (and its sub-elements sensorReport/sensorMetaData)
In all four cases, it is possible to go for either (a) an XML element, (b) a complex XML element or (c) XML inline attributes.

In this file there are a lot of events. I guess we should ensure that:

[ ] event 1 and 2 get the same hash (they currently dont)

[ ] all other events should be distinct (there currently is a collission)

anything else?

The collision was due to the first example event already being present in another example file. I have deleted the other one.
Now https://github.com/gs1/EPCIS/blob/master/XSD/SensorDataExamples.xml is part of the tests. https://github.com/RalphTro/epcis-event-hash-generator/commit/389e4c351b22f6b8d5772c503f8ceb3ee0797691

@RalphTro the prehashes are in https://github.com/RalphTro/epcis-event-hash-generator/blob/master/tests/examples/SensorDataExamples.prehashes
Anything in particular that you are looking for?

Dear @Echsecutor ,
Thanks a lot for this! I just checked the pre-hash string of the last transformation event and came only across three issues:
(a) the user extensions in the errorDeclaration element do not yet appear. Namely:
example:issuerEmployee 123</example:issuer>
example3:errorCodes
example3:value134</example3:value1>
example3:value4466</example3:value44>
</example3:errorCodes>
(b) the inline user extensions in (1) sensorMetaData and (2) the first sensorReport element do not yet appear. Namely:
(1) example:someFurtherMetaData="someText"
(2) example:cv="123"
(c) the user extensions below readPoint and bizLocation do not yet appear. Namely:
example:gs1ES(414)4023333000000</example:gs1ES>
example:gs1ES(414)4023333000017 (254)12</example:gs1ES>
For all three points, note algorithm step no. 19 which I presented just yesterday in the EPCIS call (none of the participants disagreed).
Many thanks in advance for adjusting that!

Ah, many thanks for pointing that out! Indeed, our way of providing an explicit list with the ordering of elements to be included into the hash string leads to elements not appearing in this list to be ignored. I will change the algorithm such as to include also those unknown fields

@RalphTro after reading 19. a few times, I still want to make sure:

we add the mother element name before the namespace before the key
all user extension elements are at the end of the pre hash string, not next to ("inside") their mother element

right?

Dear @Echsecutor , with regard to the second bullet point: correct
Regarding the first one and just to prevent any misunderstanding :-): What do you mean with "...before the namespace before the key"? If you consider a standard field with an extension point a "mother element " and the latter conveys a user extension, then yes: when concatenating its content to the pre-hash string, we first need to indicate the mother element (let's say "readPoint"), followed by the respective keys or key value pairs (where all keys are always prefixed with their namespace) - depending of whether it is a complex or ordinary element.
So, concatenation in this case works similarly as with e.g. event-level extensions - the only difference is that the entire sub-string needs to be singularly prefixed with the mother/standard element's name.
Was I able to answer your question? ;-)
If you think that the wording of #19 should be improved, please let me know!

Many thanks! I think I got it. ;)

fixed in https://github.com/RalphTro/epcis-event-hash-generator/pull/34


Rendering pathLayer at high zoom

Description
Uneven rendering of path layer at higher zoom levels.

Repro Steps
I have attempted to get a different rendering result using layer properties such as widthScale, widthUnits, fp64 and tweaking widthMinPixels/widthMaxPixels.
Any tips, or is this just an architectural decision that I won't be able to get around?
Layer code
`/**

Data format:
[
{ color: [82, 163, 219], coordinates: [[-122.4, 37.7], [-122.5, 37.8], [-122.6, 37.85]] },
...
]
*/
export default function createTraceLayer(data, selected) {
return new PathLayer({
id: 'trace-layer',
data,
rounded: true,
widthMinPixels: 6,
widthMaxPixels: 16,
getPath: ({ coordinates }) => coordinates,
getColor: ({ color }) => color,
getWidth: 8,
opacity: selected ? 0.4 : 0.9,
fp64: true
})
}`

Environment (please complete the following information):

Framework Version: 7.1.10
Browser Version: Chrome 75
OS: Mojave

From your GIF it looks like it's the other way around (path disappear at low zoom levels). It will help if you share your path data; I suspect that it is too fine-grained. The PathLayer discards a segment if the length/width ratio is less than 0.001 (this is arguably an arbitrary number but we cannot reduce it to 0). You can try turf.simplify to reduce the number of points when zooming way out.

Thanks for the insight. I suspect you are right: it is gps trace data and so many many points along the path. And sorry, getting my zoom orientation back to front!


Website Load Up

Requirement
The website should load quickly to provide a seamless user experience (REA-001 and REA-002).
Tasks

[ ] Optimize website code and assets for speed
[ ] Test website speed with various devices and connections

From Use Case: REA-001
https://github.com/RequirementsProject/RealtorWebsiteProject/blob/main/Use Cases.pdf


release 4.0.0

Resolves #298

@saz Is #294 correctly labeled as a bug?  The PR which resolved, #296, it is marked as an enhancement.

As the package is required to get timesyncd working, I'd say yes.

@saz Does that mean #296 should be labeled as a bug fix?

Yes. I don't see it as an enhancement

@ekohl I don't see why we can't change the label on #313 and regenerate the changelog. I'll do that now...

Changelog has been regenerated after the merge of #313, the closure of additional issues, and PR label changes.


fix bgcolor issue with ExprTree

Fix bgcolor problem with ExprTree visualization

Codecov Report

Merging #123 (0aa8061) into master (542bc3b) will decrease coverage by 0.02%.
The diff coverage is 0.00%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@            Coverage Diff             @@
##           master     #123      +/-   ##
==========================================
- Coverage   58.05%   58.03%   -0.02%
==========================================
  Files          55       55
  Lines        3233     3234       +1
==========================================
  Hits         1877     1877
- Misses       1356     1357       +1

Impacted Files
Coverage Δ

src/expression_tree/io.jl
0.00% <0.00%> (ø)


Add capability to work with virtual synth e.g. fluidsynth

Cherry pick from https://github.com/kshoji/Unity-MIDI-Plugin-OSX/issues/1

Related this issue:
https://github.com/kshoji/Unity-MIDI-Plugin-supports/issues/18


[DropdownMenu] Introduce higher-level menu component (DRAFT)

This PR introduces hooks and components that aim to make building menus easier. The general shape was discussed in #32088.
One notable change from what was discussed in the linked issue is the name of the outermost component. We agreed to use MenuProvider, but this name is already used elsewhere in Base UI. I decided to call the component (and the associated hook) DropdownMenu. Similarly to MenuProvider, this won't conflict with any existing identifiers from Material UI.
The structure currently looks as follows:
<DropdownMenu>
  <MenuButton>Menu</MenuButton>
  <Menu>
    <MenuItem>Item 1</MenuItem>
    <MenuItem>Item 2</MenuItem>
    <MenuItem>Item 3</MenuItem>
  </Menu>
</DropdownMenu>

I'm looking forward to seeing opinions about this naming pattern. I'm considering renaming the Menu to MenuList to make it less ambiguous.
As for the implementation, controlling the open/close state is done via a controllable reducer owned by the DropdownMenu. Menu and MenuItem dispatch actions, and the whole logic sits in dropdownMenuReducer. The dispatch function could be exposed externally in the future if needed. Such architecture allows for easy communication between components and enables painless introduction of other menu items, such as radio button or checkbox going forward.
Playground: https://deploy-preview-37667--material-ui.netlify.app/experiments/base/menu/
Closes #32088

👏 Love it!

Dropdown sounds better and shorter than DropdownMenu without losing the meaning.

Interesting idea. I'm not sure I', 100% sold, but I'll consider it. When we add a context menu in the future, I wonder what the naming scheme should be. <Context> itself is a no-go, so we'd need <ContextMenu>. But alternatively, we could say that a context menu is also a dropdown menu, just with a different trigger, so it could look like this:
<Dropdown>
  <ContextTrigger element={ref} />
  <Menu>...</Menu>
</Dropdown>

While it's something for the future, it could be worth having this at the back of our heads we we create an intuitive API.

On the naming, I would go with Dropdown as well, however, there is slight difference in what we consider Dropdown, vs what other libraries are considering it, for e.g. fluent ui - https://developer.microsoft.com/en-us/fluentui#/controls/web/dropdown, https://www.downshift-js.com/use-combobox#materialui - it seems to be more associated with the autocomplete. If we consider this, maybe DropdownMenu is a better name.

But in our case, we still have a Menu component inside, so it's more clear, I guess. So essentially, the Dropdown component would implement a pretty generic concept of dropdown-anything, and we will use it to build the Menu, but in theory it could be used in a more popover-like way.

But in our case, we still have a Menu component inside, so it's more clear, I guess. So essentially, the Dropdown component would implement a pretty generic concept of dropdown-anything, and we will use it to build the Menu, but in theory it could be used in a more popover-like way.

Fair enough, let's go with Dropdown only then for the start. I am wondering whether we should make this unstable at start, similarly to the NumberInput, and stabilize it once we have enough feedback on it. That way, we can experiment and change the name later if it creates confusion. What do you think?

A problem with this approach is that we'd have to make the Menu unstable as well as it had to be adjusted to work with the Dropdown

@siriwatknp I'll introduce these changes to Joy as well. Are you OK with it?

@siriwatknp I'll introduce these changes to Joy as well. Are you OK with it?

Sounds good to me!

@siriwatknp I'll introduce these changes to Joy as well. Are you OK with it?

Sounds good to me!

Thinking about it again. Would it be better to separate the PR? easier to review and track in the changelog.

Merging just the changes from Base UI would leave Joy UI broken as the Base Menu's API was changed.
I can create a separate PR based on this branch to it's easier to review

@siriwatknp I'd appreciate if you could double-check the changes in Joy.

@siriwatknp I'd appreciate if you could double-check the changes in Joy.

Got it.


[post] Automated framework migration - part #1

[post] How to Migrate Legacy PHP Applications Without Stop Developing New Features
[post] add image for automated_migration
[post] fix newlines
add metadata
grammarly
present tense, author link

Please check the text if it's ok for you, we can :ship:  it :)

@TomasVotruba
Thanks for the fixes! Looks good :+1:


AbstractMCMC fixes, rename some files, and update manifests

I believe I need additional permissions in order to do this (I created the fork to work around not having said permissions)

@yebai this looks to be mergeable


[1.14.4] Please update to forge .45 It has breaking changes.

.45 introduced some breaking changes and most mods need to update.
I suspect M2D needs to as well because when added it seems to block other mods from registering.
Log below-
I took a known good loading world, and added M2D and it failed to load properly.
debug.log
latest.log

Thanks for reporting. I just upload a new version on M2D curseforge page.