chore: bumps all project dependencies to latest versions

Just routine maintenance :-)
(Note to reviewers: This is on develop, not next)

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Add ConnectEhrStep

Overview
This PR adds the ConnectEhrStep, as specified in https://github.com/CareEvolution/Consumers/issues/11603.
Here is a simple screenshot, but I will provide a screen record to demonstrate live EHR connection tomorrow.

A few notes about the implementation.

In the initial state, the next button is disabled.
In order to proceed, a participant needs to select a provider using ProviderSearch component, which initiates EHR connection process.
Internally, there is a polling process that begins once a provider is selected, which checks for whether an external account from that provider exists.
When such provider account is found, the polling process stops and the participant is allowed to proceed to the next step.

Security
REMINDER: All file contents are public.

[x] I have ensured no secure credentials or sensitive information remain in code, metadata, comments, etc.

[x] Please verify that you double checked that .storybook/preview.js does not contain your participant access key details.
[x] There are no temporary testing changes committed such as API base URLs, access tokens, print/log statements, etc.

[x] These changes do not introduce any security risks, or any such risks have been properly mitigated.

Describe briefly what security risks you considered, why they don't apply, or how they've been mitigated.
Checklist
Testing

[ ] MyDataHelps iOS app
[ ] MyDataHelps Android app
[ ] MyDataHelps website

Documentation

[x] I have added relevant Storybook updates to this PR as well.
[x] If this feature requires a developer doc update, tag @CareEvolution/api-docs.

Consider "Squash and merge" as needed to keep the commit history reasonable on main.
Reviewers
Assign to the appropriate reviewer(s). Minimally, a second set of eyes is needed ensure no non-public information is published. Consider also including:

Subject-matter experts
Style/editing reviewers
Others requested by the content owner

I've updated the static screenshot with a live recording. In the meantime, I've also made sure that we open EHR page in a new window, similar to #104. It was the experience the Scripps team specifically requested, and I think it makes sense.
Besides, I've also positioned the next button at the bottom so that it is not kept pushing down by the provider search component, which supports infinite scroll.
Let me know what you think. @ashleyrtate @chrisnowak


Assignment 1

Good job overall but missing the circular PQST plots and I disagree with the irregular heart rate. I think based on this long signal, some outliers are ok but in general the BPM is +-100.


Error when building for cloudflare preset

Hi,
When running NITRO_PRESET=cloudflare pnpm build
I get:

 ERROR  Cannot resolve<EMAIL_ADDRESS>from<EMAIL_ADDRESS>and externals are not allowed!

  at Object.resolveId (xxx/node_modules/.pnpm/nitropack@0.4.4_vite@2.9.6/node_modules/nitropack/dist/chunks/prerender.mjs:1095:17)
...)

 ELIFECYCLE  Command failed with exit code 1.

I am using nuxt version v3.0.0-rc.3-27539143.46c656c
Normal building without preset works fine.

@zipme If you still have this issue, could you provide a reproduction ?

Let's closed this for now as the cloudflare preset works.


Is there any benchmarking?

We all know that hashmaps are cool, but It'd be interesting to see how exactly cool they are. I suggest writing a comparison with getting values from plain std::map and searching from std::vector. It would look nice in the readme section.

There is a third party benchmark here
https://github.com/nitnelave/lru_cache

Sorry, there is not benchmark.


x/time/rate: SetLimit does not update burst

Please answer these questions before submitting your issue. Thanks!
What version of Go are you using (go version)?
go version go1.9.1 darwin/amd64
Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env)?
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/madhuravi/Uber/gocode"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.9.1/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.9.1/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/0k/vpbbbbjx3vv14fjd8l9ry2fh0000gn/T/go-build455608000=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
What did you do?
Documentation for SetLimiter https://github.com/golang/time/blob/master/rate/rate.go#L276
"// SetLimitAt sets a new Limit for the limiter. The new Limit, and Burst, may be violated
// or underutilized by those which reserved (using Reserve or Wait) but did not yet act
// before SetLimitAt was called."
What did you expect to see?
I expect SetLimit to update burst value based on above comment. But it does not take an argument for or update the burst value at all.
What did you see instead?
I would like a function to update the burst value. I manage this on my own with locks etc. but would be nice to be part of the library.

SetLimit sets the limit only, not the burst. The comment is explaining that this change may violate the limit and burst settings of outstanding reservations.
There is no SetBurst because to date no one has asked for it.  If you have a use case, I think we can accept a contribution for it.  I'll need to pull in a reviewer, as I'm no longer actively working with this code.

This was for my previous project, I'm no longer working on it. IMO it's worth clarifying the comment but feel free to close if there are no other requests for this.

I'd like to tackle this if it's still something that needs to be done.

@simar7 - Do you have a real-world use case where you need to update the burst value ?

@agnivade I do. My use case is simple have a long-lived rate limiter shared across goroutines that has to adapt to dynamic configuration changes, including burst size.
@simar7 I would love it if you contributed something! Tag me and I'll help review if that's allowed.

Sounds reasonable @mholt. @simar7 - feel free to have a go at this.

Does this CR need a bump?

I have done that now.

Apologies, I've been away from this email. I've replied on the review.
On Tue, Sep 17, 2019 at 7:07 AM Agniva De Sarker<EMAIL_ADDRESS>wrote:

I have done that now.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/golang/go/issues/23575?email_source=notifications&email_token=ACKIVXMSX2G6IRQNQMBLA4LQKC27FA5CNFSM4EN3UBL2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD64FCEY#issuecomment-532173075,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACKIVXI5KDX6P2SUCDSKQK3QKC27FANCNFSM4EN3UBLQ
.

Thanks for the feedback. I've addressed the comment in the review.

Awesome, thank you!!


Bulk processor retries indefinitely on failure

Please use the following questions as a guideline to help me answer
your issue/question without further inquiry. Thank you.
Which version of Elastic are you using?

[ ] elastic.v7 (for Elasticsearch 7.x)
[x] elastic.v6 (for Elasticsearch 6.x)
[ ] elastic.v5 (for Elasticsearch 5.x)
[ ] elastic.v3 (for Elasticsearch 2.x)
[ ] elastic.v2 (for Elasticsearch 1.x)

Please describe the expected behavior
This issue is similar to #1247 but with a bigger scope.
When an individual request fails in a bulk processor, it should not retry when the backoff returns false.
Please describe the actual behavior
When the backoff returns false and there is an error in the individual request , the failing request is added back to the bulkprocessor before the commit function returns. This causes the indefinite retries.
The following code in bulk_processor.go is responsible for this behaviour.

// commitFunc will commit bulk requests and, on failure, be retried
// via exponential backoff
commitFunc := func() error {
    var err error
    // Save requests because they will be reset in service.Do
    reqs := w.service.requests
    res, err = w.service.Do(ctx)
    if err == nil {
	// Overall bulk request was OK.  But each bulk response item also has a status
	if w.p.retryItemStatusCodes != nil && len(w.p.retryItemStatusCodes) > 0 {
		// Check res.Items since some might be soft failures
	    if res.Items != nil && res.Errors {
		// res.Items will be 1 to 1 with reqs in same order
		for i, item := range res.Items {
		    for _, result := range item {
	                if _, found := w.p.retryItemStatusCodes[result.Status]; found {
			    w.service.Add(reqs[i]) //here the failing request is added back to the processor regardless of the backoff flag
			    if err == nil {
				err = ErrBulkItemRetry
	                     }
			}
	            }
		}
	    }
        }
    }
    return err
}

Any steps to reproduce the behavior?
One easy way to recreate this is to retry on client side errors, and send wrong data type to a field in the index.

hi @raiRaiyan I believe I contributed the code that you referenced.
The library will check the status on each response line item as shown above before adding the request corresponding to the line item back.  The default list of status codes this applies to is
defaultRetryItemStatusCodes = []int{408, 429, 503, 507}

if _, found := w.p.retryItemStatusCodes[result.Status]; found {
// add back
}

These correspond to a set of status codes I looked up which could be temporary errors.  E.g. 429 too many requests.   I would be surprised if a wrong data type would cause one of those response status to be returned, but I would be interested to find out if that's wrong.
You can override this slice of status codes to add back with the  RetryItemStatusCodes method on the bulk processor.

@rwynn  Thank you for the reply. The code works as expected when the requests succeed after the initial failure, but the issue is of infinite retries when the requests do not succeed. The wrong data type was just an example for how to recreate the issue.
My understanding is that the backoff function defines how the requests are retried and it can control when to stop retrying by returning false from the Next function. But this is not the case, as the commitFunc keeps adding the failed requests (provided it belongs to the list of status codes defined) to the worker, regardless of the output of the backoff function.
I want the processor to stop retrying when the max time is reached for exponential backoff and discard the failing request, but currently that doesn't seem to happen.

@raiRaiyan I think to get the behavior you are expecting, one way to do it would be to add a 4th argument to RetryNotify defined here which is a reset function.
The reset function would be called when all the retries have been exhausted without success and it would clear the queue of requests.
So, I'm thinking something like this...
func RetryNotify(operation Operation, b Backoff, notify Notify, reset ResetFunc) error {
	var err error
	var wait time.Duration
	var retry bool
	var n int

	for {
		if err = operation(); err == nil {
			return nil
		}

		n++
		wait, retry = b.Next(n)
		if !retry {
                    if reset != nil {
                       reset()
                    }
		    return err
		}

		if notify != nil {
			notify(err)
		}

		time.Sleep(wait)
	}
}

The reset function passed in would be a function that closes over BulkService and calls Reset on it to clear the line items.

To clarify further, without adding back the request lines in the commit function you get a scenario where the overall bulk request succeeds, but the response line items contain soft (temporary) failures.  If you don't inspect those and return an error on them, then the RetryNotify thinks the operation() call succeeded and does not initiate retry.   Furthermore, without the "add back" logic you actually lose those line items since the Do function calls Clear if the overall response was OK.

A much more direct solution would be to simply add the following line after the call to RetryNotify.
err := RetryNotify(commitFunc, w.p.backoff, notifyFunc)
w.service.Reset()

Since all the retries happen inside RetryNotify.

Yes. Resetting the service queue after the RetryNotify makes sense. I was thinking of passing a flag to the commitFunc to control whether or not the request is added back, but just resetting the queue is enough and the overhead is very minimal.

@rwynn @raiRaiyan I'm very busy with my day job currently, so I'd be more than happy to get a PR to be merged for the next release. Thanks for your committment.


ssh:// after network re-connection and SIGINT issues

Hello,
I did some tests with attic and I am surprised about the features and the performance, thanks a lot!
During some tests through ssh:// I tried to disconnect the cable or wireless for a few minutes and I noticed the following issues:

(generally) after an ssh timeout (i suppose) attic client re-open the connection and run a new attic serve as follow

sshd: pippo [priv]
sshd: pippo@notty
/usr/bin/python3 /usr/bin/attic serve
sshd: pippo [priv]
sshd: pippo@notty
/usr/bin/python3 /usr/bin/attic serve
and sometimes restart the sync sometimes not. The old one hang and should killed by hand.

SIGINT implementation doesn't work; I suspect that a thread (ssh?) doesn't receive the signal.

note: I use freebsd 10.1-RELEASE as client and debia 8 as server.
Someone has noticed the same issues?
thanks

The locking is not trivial and timeouts of SSH can leave a zombie attic process. Generally on an interrupted connection you want to make sure the attic process is done writing and then it can be killed.
In the fork 'borg' or attic, the locking mechanism was improved. If by any chance you get around testing it, your setup might work more reliable. If you still encounter issues, let us know!

why do you refer to locking? the original post had nothing about it.

His observation was that attic re-spawned another process. To be honest, I did not know that there was such an behavior nor did it ever happen to me. But his ssh log indicates that something had restarted attic.
With a new attic process, the locking should kick in if the old process is still around and busy writing something.
What different theory would you have?


Benchmarking

Hi,
I wrote some basic benchmarking that you might like to try. Just switch to the branch and view /test/bench/ locally to see it.
The functionality is basically:

When you press the "Start" button it create X components, Y entities, and randomly adds Z components to each entity.
Then it does the equivalent of running X processes each animation frame. That is, for each component it loops through all entities with that component and sums a value from their state object.
Finally when you press "Stop" it reports the time taken for init and the average time taken each frame to run the processes.

Let me know if you have comments! I'm done with the branch so if you like it feel free to merge/rebase onto master.

Wow! That is super nice! Here are some results on my computer:
352 iterations over 200 components, 500 entities w/ 50 components each
init time 91.84 ms
average time 5.88 ms/iteration
checksum: 25000 sum/iteration

213 iterations over 2000 components, 5000 entities w/ 500 components each
init time 12599.10 ms
average time 1523.56 ms/iteration
checksum: 2500000 sum/iteration

I'm not sure how to interpret those though... Is it good? Is it not?
Thanks!

I'm not sure how to interpret those though... Is it good? Is it not?

In concrete terms I have no idea! :smile: All the number tell by themselves is how fast your PC is. I made the benchmark basically for three things:

To show roughly how many entities/components are feasible for a game
To simulate heavy use so that browser profiling tools have something to profile. With more work this could show if there are bottlenecks
For comparison, so I can tell if any performance improvements are working or not

More on (3) soon :wink:

Hi, just wondering if you saw my update on issue #18? No rush, just not sure if gh pinged you or not.

@andyhall hey, I did see it, but was in vacations and did not take time to look at it yet. I'll get on it asap. Thanks!


Infoj Order Correction

Description
The lookup for the infoj_order checks on key, then field, and finally query. This fails when a key exists but doesn't match.
We have created a set of the different fields that will then be compared with a has check on the entry.
GitHub Issue
Type of Change
Please delete options that are not relevant, and select all options that apply.

✅ Bug fix (non-breaking change which fixes an issue)
✅ Testing

How have you tested this?
Run the local tests.
Testing Checklist

✅ Existing Tests still pass
✅ New Tests Added
✅ Ran locally on my machine

Looking good.
I moved the map method into documented function to make this eassier readable.

I updated the test to be in order of infoj > order > execution > results > expected > test for readability especially when setting breakpoints.

Note that you can create an array from an elements list allowing to use map functions instead of pushing into results in a for loop.
      const results = Array.from(infoj.children)
        .map(el => el.firstChild.innerText.trim())

Nice one!


Cursor teardrop doesn't scroll with view

Steps to Reproduce

Open Flutter Gallery example.
Navigate to Text fields demo.
Enter some text in a field; e.g., Life story.
Tap in text to reposition the cursor. Teardrop appears below point.
Scroll the view. The teardrop remains floating at the same physical position, instead of scrolling with the view.

Doctor
[✓] Flutter (on Mac OS X 10.12.4 16E195, channel master)
    • Flutter at /Users/cbracken/src/flutter/flutter
    • Framework revision 657a4c3fc6 (7 hours ago), 2017-03-27 14:33:15
    • Engine revision 61fc1d6e31
    • Tools Dart version 1.23.0-dev.9.0

Speculatively setting to M3 for now.  Could see arguing for M2.

I fixed this.


Mouse actions sometimes trigger the wrong command

When there are many mouse actions in quick succession, it seems that the wrong events are fired. For example, when putting volume control on mouse wheel and mute/unmute on left mouse button, after scrolling a lot, a mouse click might change the volume or scrolling might mute/unmute. Need to investigate this further.

Haven't been able to reproduce this lately. Maybe some code change fixed this accidentally? Not sure. I'll close this until I see it happen again.


License incompatibility in GeomALGO_Splitter code

The code https://github.com/DLR-SC/tigl/blob/master/src/boolean_operations/GEOMAlgo_Splitter.hxx uses a LGPL license, which can not be combined with Apache 2.0.
We can simply  remove these, as they are now included in OCCT.

Thanks for the find!


WIP: Automate browser testing

This is WIP because it isn't fully working, some specs are failing.
I've attempted to debug it but I've reached the limit of my understanding of RSpec, it would be good to pair with someone who knows more.
Notes:
Tests pass locally with
bundle exec rspec spec/features --tag browserstack

But fail with
bundle exec rake browserstack:local

Screenshot of failure:

At first I thought it was ElasticSearch but after modifying the spec/code to not use any ES it was still failing and after a pry it looks like Vacancy.all == 0

Aha, looks like it was the database cleaner strategy...

Added browserstack: true to most happy paths, all tests passing in BrowserStack.
Finished in 4 minutes 43.2 seconds (files took 6.23 seconds to load)
32 examples, 0 failures

 Automate cross browser testing

Still not resolved. I messaged Chris to ask about possible connectivity issues between the build server and browserstack, just waiting for a response

We haven't been able to make this work as intended on CI on either AWS CodeBuild or Codeship. The only value I can see that remains is having this as a tool that can be run locally from time to time. In reality I predict this will quickly be forgotten as the team changes and this code will linger on and deliver very minimal value.
If we get hurt by the absence of this again, we can revisit this closed pull request and salvage the parts that allow it to work locally as currently this includes a lot of Terraform that's not required.


update errors if cache is expired.

I have the page set to refresh every 60 seconds, and the cache set to expire every 5 minutes. If I leave the page open for longer than that and watch the phpfastcache files, the cache updates, but the xmlhttp request that is sent is aborted after 7 seconds.
the request that fails is /statuspage/checks.php?callback=StatusPage&action=update&_=1431380894015

Looking into this now

I think I fied this issue by checking on some php warning as this might be the cause:
http://screencast.com/t/usF0wPnse
Check this pull request: https://github.com/nerdbaggy/StatusPage/pull/31


Project Management does not move PRs into "To Review"

When a PR is marked as ready for review (e.g. no longer a draft) or when a PR is marked as requested a review then the PR should move into the "To Review" column.
This will require finding the ticket on the board and moving it rather than just blindly creating it.

Not a big enough pain point to address at this time. Closing for now.


Can not run ng build --prod

I got the error like this
ERROR in /MyProject/$$_gendir/node_modules/angular2-virtual-scroll/dist/virtual-scroll.ngfactory.ts (141,35): Supplied parameters do not match any signature of call target. when I run the ng build --prod,
but it work fine for ng build.
The environments on my computer are
Ubuntu 14.04.5 LTS
@angular/cli: 1.1.2
node: 7.4.0
@angular/common: 2.4.10
@angular/compiler: 2.4.10
@angular/core: 2.4.10
@angular/forms: 2.4.10
@angular/http: 2.4.10
@angular/platform-browser: 2.4.10
@angular/platform-browser-dynamic: 2.4.10
@angular/router: 3.4.10
@angular/cli: 1.1.2
@angular/compiler-cli: 2.4.10
Could you please fix this problem?

Can you try again with the latest version of the package & let me know if you're still experiencing this?

My project upgraded to Angular 4, It has no trouble.
Thank you very much.


Adguard Home in Home Assistant

I'm trying to put the ingress portal of Adguard Home add-on of Home Assistant but it does not work.
Is this a feasible scenario?

You should be giving the just the server name. example: http://adguard/ and not http://adguard/<something>

No, I have not tested this with Home Assistant

Ok thanks, that's probably why I can't connect via URI/user/password.


[Select] onChange fired on init when passing initial values

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Steps to reproduce 🕹
Link to live example:  https://codesandbox.io/s/hopeful-visvesvaraya-r527yc?file=/demo.tsx
Linked with 36783
Current behavior 😯
When using object as Select option value and passing value as state with some initial value, those values (objects) are not matched even they are same. Due the logic of how BaseUI Select works (mentioned in 36783, this fires onChange event with empty array and initial values are deleted.
Expected behavior 🤔
Match initial values with options with deep compare when using object values in options. Matching them should not fire the onChange event.
Context 🔦
I m using select with form (formik) and have some initial values in it. Formik passes those values into all fields and this bug causes to have this field empty, even there was value passed to it.
Your environment 🌎
No response

@martsim6, your use case should be solvable. I introduced the areOptionsEqual prop in #37615.

@michaldudak thanks a lot!


dashboard: fix dashboard_url setting

This setting must be set to something resolvable.
See: ceph/ceph-ansible/issues/4085 for details
Fixes: #4085
Signed-off-by: Guillaume Abrioux<EMAIL_ADDRESS>

mergify failure, ci has passed, merging anyway


Kagi

Can you add Kagi?

Hello @Winthan,
Sure, I will add it to the list.
KJ

Hello @Winthan,
Sure, I will add it to the list.
KJ


The help icon on the login failed page can not be used.

Date: 2016/07/22
[Test category]: creative Test
Severity: minor
[Steps to reproduce]

Marketplace owner create a "closed" marketplace;
Then do not select a customer to grant the access;
Go to the homepage of this marketplace;
Login as this customer.

[Expected result]
Login failed.
[Observed result]
With SAML_SP mdoe, there is the error message "Login failed. You have no access to this marketplace. ", the help button "?" can be clicked, but do not display a help page after clicked.

@grubskim, please consider this by fixing #194

Caused by missing help pages for the new error messages:

ex_AccessToClosedMarketplaceException.htm - error message "You do not have access to this marketplace. "
ex_LoginToClosedMarketplaceException.htm - error message "Login failed. You do not have access to this marketplace. "

/oscm-portal-help/help/en/help/tasks/ex_AccessToClosedMarketplaceException.htm
/oscm-portal-help/help/en/help/tasks/ex_LoginToClosedMarketplaceException.htm

Please rename the keys to access the help pages to the following:
error_access_closed_marketplace.htm
error_login_closed_marketplace.htm
I will add these pages to master in en/de/jp.

Required help pages are now available in master branch. Names agreed with Michal are now:

error_loginToClosedMarketplace.htm
error_accessToClosedMarketplace.htm

Remaining issues in code are solved in #194

[Build]2016/08/09 verified


Support persistent-2.13

I'll merge and release this today; thanks!

persistent-template-2.12 is a dummy package that has docs that tell you to just use persistent from 2.12 on. It doesn't export anything.

So all the more reason to remove it from the dependencies and fix this error?
 <no location info>: error: [-Wunused-packages, -Werror=unused-packages]
    The following packages were specified via -package or -package-id flags,
    but were not needed for compilation:
      - persistent-template-<IP_ADDRESS>

Or am I missing something?

What's really annoying is that you'd want to conditionally depend on it. If persistent < 2.12, then you need persistent-template. But if persistent >= 2.12, then you don't need it. And IIRC cabal does not have a way to specify that.

Sigh. And there's no way to disable -Wunused-packages except globally, is there?

I just did a release that removed upper bounds (we've decided the maintenance burden is too much for us and are going to try being more lax for now) to unblock https://github.com/commercialhaskell/stackage/issues/6010.
I didn't add the extra-deps, so the -template issue wasn't triggered and CI was green. Sorry for the conflicts.

Thanks! That works for me 😄


[1.x] Add support to generate code coverage report with JaCoCo

Description
Backport #971 and #1214 to 1.x branch

Apply JaCoCo Gradle plugin to the root project, and to all the sub-projects through BuildPlugin.
Add 3 Gradle tasks: codeCoverageReport, codeCoverageReportForUnitTest, codeCoverageReportForIntegrationTest to generate code coverage report for all the tests, unit tests, and integration tests correspondingly.
Attach Gradle codeCoverageReport task to check task.
Remove outdated code of giving JaCoCo files permission when Java security manager enabled

Usage of the new Gradle tasks:

Generate code coverage report after check task: run ./gradlew check -Dtests.coverage=true
Generate code coverage report
for all the test: ./gradlew codeCoverageReport,
for unit tests only: ./gradlew codeCoverageReportForUnitTest,
for integration tests only: ./gradlew codeCoverageReportForIntegrationTest
The report will be in XML format only by default,
to generate report in HTML format, add parameter -Dtests.coverage.report.html=true, for example ./gradlew codeCoverageReport -Dtests.coverage.report.html=true,
to generate report in CSV format, add parameter -Dtests.coverage.report.csv=true,
not generate report in XML format, add parameter -Dtests.coverage.report.xml=false,

Issues Resolved
#850
Check List

[ ] New functionality includes testing.

[x] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has javadoc added

[x] Commits are signed per the DCO using --signoff

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

start gradle check

Thanks @tlfeng for the change!

Thanks for your review of this PR and the previous one! 👍


DLL Export conflicts with Fody in Visual Studio 2015

I recently upgraded from Visual Studio 2013 to 2015 and my projects where I used both DLL Export and Fody (More specifically ModuleInit.Fody) stopped working.
I have tried the same project on different computers with different versions of Visual Studio 2015. Same issue on all computers.
It seem as i can't use DLL Export together with Fody (e.g. ModuleInit). Both tools works great separately, but when both is included in a project the build fails.
The build error I get:
Severity    Code    Description Project File    Line    Suppression State
Error       C:\Users\[...]\AppData\Local\Temp\tmp4CC9\VCI_Comm_PlaybackNode.il(773) : error : Undeclared identifier IL_0055
D:\Projects\VCI_Project\trunk\VCI_Comm_Win\VCI_Comm_PlaybackNode\ConfigManager.cs(37) : error : syntax error at token ':' in:     IL_0055:  br.s       IL_0057  VCI_Comm_PlaybackNode   D:\Projects\VCI_Project\trunk\VCI_Comm_Win\packages\DllExport.1.4.0\tools\net.r_eg.DllExport.targets    61

Using detailed buildlog I can see the following errors:
8>  calling 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\ILAsm.exe' with /nologo "/out:D:\Projects\VCI_Project\trunk\VCI_Comm_Win\VCI_Comm_PlaybackNode\bin\x86\Debug\VCI_Comm_PlaybackNode.dll" "C:\Users\[...]\AppData\Local\Temp\tmp4CC9\VCI_Comm_PlaybackNode.il" /DLL "/resource=C:\Users\[...]\AppData\Local\Temp\tmp4CC9\VCI_Comm_PlaybackNode.res"  /debug   (TaskId:101)
8>  ILAsm 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\ILAsm.exe' returned gracefully. (TaskId:101)
8>D:\Projects\VCI_Project\trunk\VCI_Comm_Win\packages\DllExport.1.4.0\tools\net.r_eg.DllExport.targets(61,5): error : C:\Users\[...]\AppData\Local\Temp\tmp4CC9\VCI_Comm_PlaybackNode.il(773) : error : Undeclared identifier IL_0055
8>D:\Projects\VCI_Project\trunk\VCI_Comm_Win\packages\DllExport.1.4.0\tools\net.r_eg.DllExport.targets(61,5): error : D:\Projects\VCI_Project\trunk\VCI_Comm_Win\VCI_Comm_PlaybackNode\ConfigManager.cs(37) : error : syntax error at token ':' in:     IL_0055:  br.s       IL_0057
8>D:\Projects\VCI_Project\trunk\VCI_Comm_Win\packages\DllExport.1.4.0\tools\net.r_eg.DllExport.targets(61,5): error :
8>     at RGiesecke.DllExport.Parsing.IlParser.RunIlTool(String installPath, String toolFileName, String requiredPaths, String workingDirectory, String settingsName, String arguments, String toolLoggingCode, String verboseLoggingCode, IDllExportNotifier notifier, Int32 timeout, Func`2 suppressErrorOutputLine) in C:\Users\[...]\Downloads\DllExport-1.4\DllExport-1.4\RGiesecke.DllExport\Parsing\IlParser.cs:line 378
8>     at RGiesecke.DllExport.Parsing.IlAsm.RunCore(CpuPlatform cpu, String fileName, String ressourceParam, String ilSuffix) in C:\Users\[...]\Downloads\DllExport-1.4\DllExport-1.4\RGiesecke.DllExport\Parsing\ILAsm.cs:line 148
8>     at RGiesecke.DllExport.Parsing.IlAsm.Run(String outputFile, String ilSuffix, CpuPlatform cpu) in C:\Users\[...]\Downloads\DllExport-1.4\DllExport-1.4\RGiesecke.DllExport\Parsing\ILAsm.cs:line 118
8>     at RGiesecke.DllExport.Parsing.IlAsm.ReassembleFile(String outputFile, String ilSuffix, CpuPlatform cpu) in C:\Users\[...]\Downloads\DllExport-1.4\DllExport-1.4\RGiesecke.DllExport\Parsing\ILAsm.cs:line 80
8>     at RGiesecke.DllExport.DllExportWeaver.reassembleFile(IlAsm ilAsm, String outputFile, String ilSuffix, CpuPlatform cpu) in C:\Users\[...]\Downloads\DllExport-1.4\DllExport-1.4\RGiesecke.DllExport\DllExportWeaver.cs:line 196
8>     at RGiesecke.DllExport.DllExportWeaver.RunIlAsm(IlAsm ilAsm) in C:\Users\[...]\Downloads\DllExport-1.4\DllExport-1.4\RGiesecke.DllExport\DllExportWeaver.cs:line 147
8>     at RGiesecke.DllExport.DllExportWeaver.Run() in C:\Users\[...]\Downloads\DllExport-1.4\DllExport-1.4\RGiesecke.DllExport\DllExportWeaver.cs:line 87
8>     at RGiesecke.DllExport.MSBuild.ExportTaskImplementation`1.Execute() in C:\Users\[...]\Downloads\DllExport-1.4\DllExport-1.4\RGiesecke.DllExport.MSBuild\RGiesecke.DllExport.MSBuild\ExportTaskImplementation.cs:line 415 (TaskId:101)
8>Done executing task "DllExportAppDomainIsolatedTask" -- FAILED. (TaskId:101)
8>Done building target "DllExportMod" in project "VCI_Comm_PlaybackNode.csproj" -- FAILED.: (TargetId:172)
8>

I have tried both DLLExport v.1.2.7 and 1.4.0. Same issue with both.
I have also tried multiple versions of Fody. No difference.
A snippet from the generated .il file:
.class private auto ansi beforefieldinit 'VCI_Comm_PlaybackNode'.'ConfigManager'
       extends ['mscorlib']'System'.'Object'
{
  .field private class 'VCI_Comm_PlaybackNode.NodeConfig'.'CustomProperties' '_custProp'
  .field private class 'VCI_Comm_PlaybackNode.NodeConfig'.'CustomProperties' '<Config>k__BackingField'
  .custom instance void ['mscorlib']'System.Diagnostics'.'DebuggerBrowsableAttribute'::.ctor(valuetype ['mscorlib']'System.Diagnostics'.'DebuggerBrowsableState') = ( 01 00 00 00 00 00 00 00 )
  .custom instance void ['mscorlib']'System.Runtime.CompilerServices'.'CompilerGeneratedAttribute'::.ctor() = ( 01 00 00 00 )
  .method public hidebysig instance bool
          'SetupConfig'(uint32 'sessionID',
                        string 'xmlConfig') cil managed
  {
    // Code size       106 (0x6a)
    .maxstack  3
    .locals init ([0] string 'key',
             [1] class ['System.Xml']'System.Xml.Serialization'.'XmlSerializer' 'serializer',
             [2] class ['mscorlib']'System.IO'.'StringReader' 'stream',
             [3] class ['System.Xml']'System.Xml'.'XmlReader' 'reader',
             [4] bool )
    .line 17,17 : 9,10 'C:\\Projects\\VCI_Project\\trunk\\VCI_Comm_Win\\VCI_Comm_PlaybackNode\\ConfigManager.cs'
    IL_0000:  nop
    .line 18,18 : 13,44 ''
    IL_0001:  ldarga.s   'sessionID'
    IL_0003:  call       instance string ['mscorlib']'System'.'UInt32'::'ToString'()
    IL_0008:  stloc.0
    .line 19,19 : 13,74 ''
    IL_0009:  ldtoken    'VCI_Comm_PlaybackNode.NodeConfig'.'CustomProperties'
    IL_000e:  call       class ['mscorlib']'System'.'Type' ['mscorlib']'System'.'Type'::'GetTypeFromHandle'(valuetype ['mscorlib']'System'.'RuntimeTypeHandle')
    IL_0013:  newobj     instance void ['System.Xml']'System.Xml.Serialization'.'XmlSerializer'::.ctor(class ['mscorlib']'System'.'Type')
    IL_0018:  stloc.1
    .line 21,21 : 20,60 ''
    IL_0019:  ldarg.2
    IL_001a:  newobj     instance void ['mscorlib']'System.IO'.'StringReader'::.ctor(string)
    IL_001f:  stloc.2
    .line 22,22 : 20,57 ''
    .try
    {
      IL_0020:  ldloc.2
      IL_0021:  call       class ['System.Xml']'System.Xml'.'XmlReader' ['System.Xml']'System.Xml'.'XmlReader'::'Create'(class ['mscorlib']'System.IO'.'TextReader')
      IL_0026:  stloc.3
      .line 23,23 : 13,14 ''
      .try
      {
        IL_0027:  nop
        .line 24,24 : 17,79 ''
        IL_0028:  ldarg.0
        IL_0029:  ldloc.1
        IL_002a:  ldloc.3
        IL_002b:  callvirt   instance object ['System.Xml']'System.Xml.Serialization'.'XmlSerializer'::'Deserialize'(class ['System.Xml']'System.Xml'.'XmlReader')
        IL_0030:  castclass  'VCI_Comm_PlaybackNode.NodeConfig'.'CustomProperties'
        IL_0035:  stfld      class 'VCI_Comm_PlaybackNode.NodeConfig'.'CustomProperties' 'VCI_Comm_PlaybackNode'.'ConfigManager'::'_custProp'
        .line 25,25 : 13,14 ''
        IL_003a:  nop
        IL_003b:  leave.s    IL_0048

        .line 16707566,16707566 : 0,0 ''
      }  // end .try
      finally
      {
        IL_003d:  ldloc.3
        IL_003e:  brfalse.s  IL_0047

        IL_0040:  ldloc.3
        IL_0041:  callvirt   instance void ['mscorlib']'System'.'IDisposable'::'Dispose'()
        IL_0046:  nop
        IL_0047:  endfinally
        .line 16707566,16707566 : 0,0 ''
      }  // end handler
      IL_0048:  leave.s    IL_0055

      .line 16707566,16707566 : 0,0 ''
    }  // end .try
    finally
    {
      IL_004a:  ldloc.2
      IL_004b:  brfalse.s  IL_0054

      IL_004d:  ldloc.2
      IL_004e:  callvirt   instance void ['mscorlib']'System'.'IDisposable'::'Dispose'()
      IL_0053:  nop
      IL_0054:  endfinally
      .line 27,27 : 13,32 ''
    }  // end handler
    IL_0055:  ldarg.0
    IL_0056:  ldarg.0
    IL_0057:  ldfld      class 'VCI_Comm_PlaybackNode.NodeConfig'.'CustomProperties' 'VCI_Comm_PlaybackNode'.'ConfigManager'::'_custProp'
    IL_005c:  call       instance void 'VCI_Comm_PlaybackNode'.'ConfigManager'::'set_Config'(class 'VCI_Comm_PlaybackNode.NodeConfig'.'CustomProperties')
    IL_0061:  nop
    .line 29,29 : 13,25 ''
    IL_0062:  ldc.i4.1
    IL_0063:  stloc.s
    IL_0065:  br.s       IL_0067

    .line 30,30 : 9,10 ''
    IL_0067:  ldloc.s
    IL_0069:  ret
  } // end of method 'ConfigManager'::'SetupConfig'

The source code of the function that fails looks like this:

    internal class ConfigManager
    {
        private CustomProperties _custProp;

        public bool SetupConfig(uint sessionID, string xmlConfig)
        {
            var key = sessionID.ToString();
            var serializer = new XmlSerializer(typeof(CustomProperties));

            using (var stream = new StringReader(xmlConfig))
            using (var reader = XmlReader.Create(stream))
            {
                _custProp = (CustomProperties) serializer.Deserialize(reader);
            }

            Config = _custProp;

            return true;
        }

        public CustomProperties Config { get; set; }
    }

The failing line is "return true;" if I read the output correctly.
Best Regards
Oscar

Update:
Disabling .PDB generation for the project seem to solve the build error.
Unfortunately this is not an option I can use as I need the .pdb files.

Hi again Oscar,
This not from DllExport. It also reproduced and for me when Fody is installed even without DllExport.
You see this problem from DllExport because our library tried to compile already incorrect IL code.
Sample
Debug info: Full or pdb only:
namespace Sample1
{
    internal class ClassA
    {
        public bool m1()
        {
            int a, b, c;

            return true;
        }
    }
}

this works, but note the .locals def -->
  .method public hidebysig instance bool
          'm1'() cil managed
  {
    // Code size       7 (0x7)
    .maxstack  1
    .locals init ([0] int32 'a',
             [1] int32 'b',
             [2] int32 'c',
             [3] bool )                                <<<<<<<
    .line 6,6 : 9,10 'D:\\tmp\\Sample1\\ClassA.cs'
    IL_0000:  nop
    .line 9,9 : 13,25 ''
    IL_0001:  ldc.i4.1
    IL_0002:  stloc.3                                  <<<<<<< ok
    IL_0003:  br.s       IL_0005

    .line 10,10 : 9,10 ''
    IL_0005:  ldloc.3                                  <<<<<<< ok
    IL_0006:  ret
  }

0x0A - 0x0D i.e. stloc.0 - stloc.3  + see also 0xFE 0x0E
0x06 - 0x09 i.e. ldloc.0 - ldloc.3  + see also 0xFE 0x0C

Now, when failed (by short forms - 0x13 and 0x11):
just define new var
int a, b, c, d; // >>> d

because:

to reference on new variable (local variable via index from/to stack) now used 0x13 / 0x11 opcodes i.e.  -> stloc.s / ldloc.s
and this is it, see below:

  .method public hidebysig instance bool
          'm1'() cil managed
  {
    // Code size       9 (0x9)
    .maxstack  1
    .locals init ([0] int32 'a',
             [1] int32 'b',
             [2] int32 'c',
             [3] int32 'd',
             [4] bool )                                 <<<<<<
    .line 6,6 : 9,10 'D:\\tmp\\Sample1\\ClassA.cs'
    IL_0000:  nop
    .line 9,9 : 13,25 ''
    IL_0001:  ldc.i4.1
    IL_0002:  stloc.s                                   <<<<<< incorrect*
    IL_0004:  br.s       IL_0006

    .line 10,10 : 9,10 ''
    IL_0006:  ldloc.s                                   <<<<<< also here
    IL_0008:  ret
  }

0x13 <unsigned int8> i.e. stloc.s index so yes, syntax error at token ':' in:     IL_0004:  br.s       IL_0006

another interesting without debug info (as you already noticed) it generated correctly:
    .locals init (int32 V_0,
             int32 V_1,
             int32 V_2,
             int32 V_3,
             bool V_4)                  <<<<<
    IL_0000:  nop
    IL_0001:  ldc.i4.1
    IL_0002:  stloc.s    V_4            <<<<<
    IL_0004:  br.s       IL_0006

    IL_0006:  ldloc.s    V_4            <<<<<
    IL_0008:  ret
  }

Therefore, you need to report about this bug there https://github.com/Fody
:)

Thanks for your detailed analyze!

https://github.com/Fody/Fody/issues/271#issuecomment-256715340
I think need provide own ILDasm / ILAsm  (to try)
today it's also under the MIT License, so it cannot be big problem
probably v4.5.22220 works fine, but in general the ILDasm / ILAsm it's only wrapper (i.e. front-end to coreclr.dll and its dependencies ...)
TODO: to look
@OzzyL
temporarily, try with version 4.5.22220
you can compile it from here: https://github.com/dotnet/coreclr

I uploaded latest binaries here: https://github.com/3F/coreclr/issues/1
Later it will be as part of this package

ce2536e - should fix this problem

I can confirm that ce2536e solves the issue.
Big thank you for your support!

@OzzyL

Everything looks super. I can build all my projects in Visual Studio 2015 now.

I recommend to wait public release, because I'm not sure about solution above for this problem:
https://github.com/3F/coreclr/issues/2
maybe you know ? what's license for cvtres.exe (Windows Resource To Object Converter) ?
or free alternative to compile .res -> obj COFF-format (that will be placed in .rsrc section (PE)) ?
like windres, but it does not support our .res (probably need to convert .res -> .rc -> obj COFF :))

I released new version of coreclr for DllExport project:

https://github.com/3F/coreclr

# coreclr \ ILAsm

[v4.5.1]

    * FIXED: Fixed using of cvtres (.res -> obj COFF-format) in mscorpe.
             Possible crash: https://github.com/3F/coreclr/issues/2
             Related Issue: https://github.com/3F/DllExport/issues/17

    * NEW: Implemented additional searching of the converters of resources:
           Environment PATH, local directory, and other additional from user path.
           Now it also can be wrapped like ` mytool.cmd -> cvtres.exe %* ` etc.

    * NEW: Added new /CVRES (/CVR) key to ilasm.exe
           `/CVRES=<path_to_file>   Set path to cvtres tool: /CVR=cvtres.exe /CVR=tool\cvtres.cmd /CVR=D:\tool\`

    * NOTE: based on 4.5.22220.0  / coreclr 1.0.4
                     ^ ^  ^    ^
                     | |  |    |-- VER_FILEVERSIONREVISION
                     | |  |------- VER_FILEVERSIONBUILD
                     | |---------- VER_FILEVERSIONMINOR
                     |------------ VER_MAJORVERSION

and already updated logic for this issue. You can test this with - 5203d82

@denfromufa  probably yes, later. Because part of my changes should be useful even for main CoreCLR, but mainly it was specially for DllExport so I will look into later.
I've also plan to reconsider PE modifications at all, because ILAsm version on coreclr have a lot of limitations instead of full native version.
But as I know, MS shares only this version via coreclr only. Maybe today o_O
However ! old ILasm v4.5.22220.0 initially does not contain this problem as it described above. And anyway, this changes should not affect on full version of ILDasm/ILAsm.
my new illustration of this problem here (please note, as I see, this does not related for DllExport project at all): https://github.com/Fody/Fody/issues/271#issuecomment-256715340
...
**1304** & **1104** are correct instructions ...

    /* 0x000002A1 17           */ IL_0001: ldc.i4.1
    /* 0x000002A2 1304         */ IL_0002: stloc.s   4
    /* 0x000002A4 2B00         */ IL_0004: br.s      IL_0006

    /* 0x000002A6 1104         */ IL_0006: ldloc.s   4

full body: `133001000900000002000011 -> 001713042B0011042A`

    /* 0x00000495 17           */ IL_0001: ldc.i4.1
    /* 0x00000496 1304         */ IL_0002: stloc.s   V_4
    /* 0x00000498 2B00         */ IL_0004: br.s      IL_0006

    /* 0x0000049A 1104         */ IL_0006: ldloc.s   V_4

full body: `133001000900000003000011 -> 001713042B0011042A`

i.e. the main difference - .locals def
...

Unfortunately I have no access to source code of full version ILDasm so it's hard to say what's going on, but in general, anyone else should look Fody project in this chain as I said before.

As I am right, that custom CoreCLR build required only at build time, but at  runtime we can use genuine CoreCLR 2.0 ?

@dmitriyse,
We're using this only for PE-modification of final modules (.exe/.dll), i.e. as an post-processing of build through reassembling IL code.
Also the using of custom ILAsm\ILDAsm (on coreclr) should be only when option DllExportOurILAsm ("our IL Assembler") is activated.

As I understand, even well-patched PE (.exe/.dll)  cannot be used on Linux/Mac as .so library
Does custom CoreCLR is able to post-process .NetCore 2.0 assemblies ?
Did you try to use toolset with .Net Core 2.0 ?

1 & 2: It depends on coreclr implementation that should finally process the requests from unmanaged layer, read this: https://github.com/3F/DllExport/issues/45#issuecomment-317802099 - i.e. note again, clr environment is a core handler of this mechanism, while the final part of our modifications will be processed through mscorpe that will not to do anything except headers.
3: I have not yet considered coreclr for DllExport and have no plan to try support this at least in the next few months. It should be possible anyway, but seems not with current coreclr implementation.


When setting start and end date difference very large, it takes lag to open view controller

Hello,
I have kept, start date 50 years back from current date and end date 50 years forth from current date at time of calendar configure. And inside onViewLoad(), i have scrolled to current date.
My issue is, View controller having calendar is taking some time (approx 2-4 sec lag) for opening. If I change start and end time 2 years back and forth from current date. It opens View controller smoothly.
It gives lag when tested on real device, on simulator it is working okay.
Please guide me what should I do.

What device are you using?
I will look into this now.

I am testing on iphone 5s (IOS version 9.3.2)

Same issue, I'm using iPhone 5 . Any answer ?

@angelbetancourt yes, the solution is for me to code an update.
The work around for now is to decrease your range.
I am actively working on the fix.
Just to confirm, how large is your date range?

@patchthecode  sorry I didn't answer. My range is 1960 - 2017. Any thought so far ?

I have updated to version 7.0
Your dates should load a whole lot faster.
Let me know if this is still a problem for you

When I selected range between 2017 to 2018 it load select very slow. Could you help me?

@meanreaksmey youre  selecting a whole year of dates?

@patchthecode  Yes I selecting a whole.

hmm.. someone has already opened an issue for this.
I have to make the code a bit different for this.
This is work in progress.

@patchthecode  yes thanks you. do you have any that work faster when i selecting across year?

@meanreaksmey currently i do not. I will have to investigate. But if any one wants to do a pull request they can also do this. (in case i am to slow on this update)

@patchthecode Thanks you I'm looking to hearing from you soon. :)


Proposal: Alt, or Shift whilst using Scroll Wheel to scroll Horizontally - Mouse Wheel held down to Drag

Proposal: Alt, or Shift whilst using Scroll Wheel to scroll Horizontally - Mouse Wheel held down to Drag
Summary
When using the ScrollViewer or any scrollable view that is set to scroll Horizontally & Vertically, it should be possible to hold down either Alt, or Shift so when using the scroll wheel it will scroll on the Horizontal axis instead of only working on the Vertical one.
Rationale
Software like Adobe Photoshop and Illustrator allow you to hold down Ctrl whilst using the Mouse Wheel to scroll horizontally when working on a large or zoomed in canvas.  It makes it easier to navigate a view without having to change your mental space and move to drag the scroll bar thumb.
Ctrl is currently used to Zoom in the control, so I have proposed Alt or Shift
Paint 3D also enables pressing and holding down the Mouse Wheel to drag the view in both axies.
Scope

Capability
Priority

These behaviours should be baked into the updated ScrollViewer control
Must

These behaviours could be made toggles so they are easy to turn off if that is needed
Could

The keyboard modifier could be customised, but should pick a platform default
Could

Related to #108
Open Questions

I like it!  @likuba as fyi since this is something we've talked about before.

Qt's QScrollViewer uses Alt+scroll to scroll horizontally.

Thanks, that's good to know.  I don't know if there's any consistency across apps today so having something built-in to the control would be helpful here.  Both Edge and Chrome support Shift+scroll to scroll horizontally.

Ouch! indeed no real consistency here, probably because win32 apps don't usually do it so no established shortcut... Adobe XD uses Shift as well, though I kinda think Alt makes more sense as it's the "Alternate" key.

Shift sounds like the best one.

I'd like to also add my desire for shift + scroll = horizontal scrolling.
On Linux and MacOS, shift + scroll always outputs horizontal scrolling. I find it unhelpful to no longer have easy and unchanging access to horizontal scrolling just because I'm on windows.
Currently, depending on the program, these are the various methods to scroll horizontally:

Ensure the program I want to horizontally scroll has focus or it only scrolls vertically (acrobat dc)
Hold Ctrl+Shift to scroll or it only scrolls vertically (excel)

Needing to remember or use application specific horizontal scrolling makes it much more difficult and less seamless compared to using a different operating system

This would be useful

Once again Apple always had the solution.
On the Apple SDK (Cocoa, SwiftUI and Catalyst), all UI element that scroll have an automatic Shift + mouseWheel horizontal scroll.
It is simple Microsoft, you do everything like Apple does and in the exact same way and everything will be fine.
While you are at it, please add a way to move folders and all its content like Android, Apple and Linux does.

(Mostly using column view) i know this is no "standard" or something but:

using a laptop pushing as less keys as possible would be great to navigate
scroll gestures are mostly using already 2 fingers on touchpads (additionally pushing keys is a bit clonky?)
no function on klick and drag for right- or riddle-mouse-butotn right now

→ I just wanted to throw "Push and hold Right Mouse Button" into the bowl which would make scrolling horizontally and vertically possible without keyboard interaction (Similar to some 3D-CAD-Programs)

Vertical: Scroll Wheel
Horizontal: Hold and Drag Right Wheel

@SHU-red I think even better would be to make Chrome style middle mouse click to toggle panning standard WinUI behaviour 😄

@SHU-red I think even better would be to make Chrome style middle mouse click to toggle panning standard WinUI behaviour 😄

Why not! Also good for me!

They cannot do that because MS Windows is mainly use to run legacy app from the 90's.
If they change anything, dying boomers will loose their mind.

Is there any progress on this proposal?

Forget about it, MS did not do it in the past 30 years so they won't bother.
You want that feature, just develop for Apple or Android products.
I don't know if you know, but windows 11 runs natively Android apps.
Maybe its time to make Android apps for Windows.

This seems like an incredibly easy win. Any chance of getting this implemented ?

MS does not provide any working method to intercept key press to make keyboard shortcut for an app.
Microsoft does not acknowledge the existence of a keyboard on a computer.
You think they will implement that scroll thing? Never.

Even Visual Studio provides this Horizontal Scroll behaviour on Shift, so I don't think there's any fundamental limitation here

Is it so hard for a multi-million dollar company to do simple stuff like this? How is this not done yet? This blows my mind.

As usual, the billions of dollars don't go to the programmers, only to THEIR pocket. It does not matter, they can do or not do what they want, most people will continue to use Windows no matter what. I am writing this message from a Risc-V Linux SBC, but my employer still pay me to waste time for a windows version that will never be as good or as useful than the Android, iOS and macOS version. People that remain on Windows deserve everything that happens to them.
This is the Windows experience, always has been, enjoy.


Object that inherit public properties cannot be used in parameter substitution

The commit https://github.com/visualeyes/halcyon/commit/bbf25f67c766e6f75808142a4e9847a33f8f494e seems to have broken the property discovery used in ObjectExtensions.

See https://github.com/visualeyes/halcyon/pull/42


HDR to SDR tone mapping and LUT file - questions for better understanding

Hi!
The last days I am tinkering with the grabber and image processing sections of HyperHDR to get my LED colors as accurate as possible.
My setup:

Hisense U8QF TV (4k)
Marantz 5015 AVR (TV on main out, 8K-Passthrough, 4K@120 Hz)
Wisfox Grabber (2109)
ezcoo HDMI 1x2 4k 60Hz Splitter
SK6812 RGBNW
HyperHDR running under Windows 10

LUT:
Regarding the description I used HyperHDR's screenshot feature to take a picture of the current TV screen, uploaded it to the LUT generator and tried to optimize the colors. Sadly, any LUT file I generated made it worse. Too much color, browns become hard yellow-redish, reds turn out mostly pink, and so on. I always had to turn off the 'HDR to SDR...' parameter to make it better.
Image Processing:
Then I tried to tinker with the color values in the image processing tab. First I searched for a decent calibration video on Youtube and made some small corrections.  Take a film like 'Underworld: Rise of the Lycans' which is mostly dark, color processing seems to get a little tricky.
Conclusion:
At the moment, I disabled 'HDR to SDR...', raised the hardware hue to +4 and set all colors in image processing to default values and that seems to get most colors accurate - despite the errors in dark areas.
So, my questions are:

Which steps should be taken in which order to get the most out of LUT and image processing regarding color accuracy?
Are there any decent calibration images / videos which would help in this regard?
Is there any HowTo regarding the LUT generator? I am still setting values with no real idea what I am doing there. What are those Hardle/Reinhard/BT.2020 to... things, etc... Is there an example (video) on how to use it correctly to really achieve a better image quality?

As a side note: I always read about flat colors while not using 'HDR to SDR...', but my LED colors are somehow always bright and shiny, I do not need even more colors.
Sorry for the long post, but I'd really like to understand how this all fits together to be able to change the right parameters.
Regards,
Holger

Probably you have SDR image already, maybe it's your AVR done it's job as some can do HDR->SDR or the grabber is receiving non-HDR signal. The only grabber that I know that can do partial HDR->SDR tone mapping is Ezcap 320. Grabbers based only on MS 2109 can't do it.

I forgot something really important, sorry: my ezcoo Splitter is set to downscale 4k to 1080p. Perhaps this does the trick even though the product description says that the device isn't able to convert HDR to SDR...

I doubt. 1080p also supports HDR. I would check if the signal that comes to/out from the ezcoo is in fact HDR.


datasource compatiable issue in module creation with Umc

prepareDataSource() must be compatible with Magento\Framework\View\Element\UiComponentInterface::prepareDataSource(array $dataSource)

@sivajik34 Thanks for reporting this and the other issues. The current state of the module is not compatible with the latest magento 2 version. I will take care of these issues and others I found.

@sivajik34 This should be solved in the latest version.


⚠ LPDM Handbook (hosted on Divio) has degraded performance

In 9741ae6, LPDM Handbook (hosted on Divio) (https://repohubdev.tk) experienced degraded performance:

HTTP code: 500
Response time: 5685 ms

Resolved: LPDM Handbook (hosted on Divio) performance has improved in 5aab3dc.


Activity.From does not support user profile information

Activity.From supports Id and Name (Screen Name) but not other user information like email, first name, last name even though it is provided in the messaging API's.
For example: https://api.slack.com/types/user returns
{
"id": "U023BECGF",
"name": "bobby",
"deleted": false,
"color": "9f69e7",
"profile": {
"first_name": "Bobby",
"last_name": "Tables",
"real_name": "Bobby Tables",
"email"<EMAIL_ADDRESS>"skype": "my-skype-name",
"phone": "+1<PHONE_NUMBER>",
"image_24": "https://...",
"image_32": "https://...",
"image_48": "https://...",
"image_72": "https://...",
"image_192": "https://...",
"image_512": "https://..."
},
"is_admin": true,
"is_owner": true,
"is_primary_owner": true,
"is_restricted": false,
"is_ultra_restricted": false,
"has_2fa": false,
"two_factor_type": 'sms',
"has_files": true
}
This user profile information (first name, last name, email, phone, etc) currently is not accessible within the bot framework even though the API supports it.

We are working on an update that will send the Slack token as part of the ChannelData on every message. You can then extract the token and make your own Slack RTM Api calls. The update should be published soon - hopefully in the next couple days.

Update is deployed in production.  Please give it a try and reopen if needed.


Visual Basic 6.0 or VB6

Language name
Visual Basic 6.0
URL of example repository
https://github.com/Gagniuc/Markov-Chains-Simulation-framework
https://github.com/Gagniuc/Markov-Chains-Prediction-framework
https://github.com/Gagniuc/Discrete-Probability-Detector-in-VB6
https://github.com/Gagniuc/Micro-chart-in-VB
https://github.com/Gagniuc/Visual-Sequence-Alignment-in-VB6
https://github.com/Gagniuc/Simple-sequence-alignment-in-VB6
https://github.com/Gagniuc/Markov-Chains-The-weather
https://github.com/Gagniuc/Markov-Chains-detector-in-VB6
https://github.com/Gagniuc/Genomin
https://github.com/Gagniuc/Mapping-pixels-to-LEDs-for-the-Photon-pixel-coupling-method
https://github.com/Gagniuc/WebCam-software-sampling
https://github.com/Gagniuc/VB6-add-GUI-objects-at-runtime
https://github.com/Gagniuc/Motif-detection-VB6
https://github.com/Gagniuc/PI-laboratory-in-VB6
https://github.com/Gagniuc/PromKappa-3.0-Objective-Digital-Stains-in-VB6
URL of syntax highlighting grammar
https://github.com/Gagniuc/Micro-chart-in-VB
However, an extra color for the inbuilt functions will be extraordinary.
Most popular extensions
Notice that the .vbp and .vbw extensions are VB6 specific.

The extensions commonly used by this language:

".vbp"
".vbw"
".bas"
".cls"
".frm"
".frx"

Detected language
VBA

I would say the primary difference on the code level between VBA and VB6 is the different global objects available to them. But that is also true of VBA when running under different host environments -- the global objects available when VBA is running under Microsoft Word are different from those available when running under Microsoft Excel.

I have no experience in either language, but from what I've read this is going to be a challenge to implement if you plan to have all those extensions supported by both languages as I believe they have similar (identical?) syntax, which means how would one differentiate programmatically between a VB6 .cls file and a VBA .cls file? The same thing would apply to all the other shared extensions.
It would be easier to implement VB6 with just the .vbp and .vbw extensions if they really are unique to the language as there would be no need to differentiate them from another language.
It's probably also worth pointing out the current classification came about because of #4725 which pulled things out from under the "Visual Basic" name into different names. /cc @zspitz as the author of that PR.
That PR was based of previous discussions in #2418

The .vbp and .vbw extensions are unique to the VB6 language. Thus, if any VBA files are accompanied by files with .vbp and .vbw extensions, than all repository is Visual Basic 6.0. Just look on any of my repositories on VB6.

So basically the extension and size of file is all that the Linguist takes into consideration?

No, it also takes into account some of the content of each file, if it needs to. This is where things like the modeline, shebang, heuristics and classifier come into it. However, there's an ordering in the strategies used which is detailed in the docs at https://github.com/github/linguist/blob/master/docs/how-linguist-works.md. Essentially, it's a funnel into which a lot of languages go with each strategy attempting to whittle the list down to one language. This is done on a per-file basis.
The file size isn't considered at all.

Nonetheless, it will be nice to have a version of the Linguist that correctly detect VB6 projects :)

Here's an idea:
We add VB6 as a new language with the following two extensions:

.vbp
.vbw

Once VB6 is part of Linguist, it should be possible for VB6 project maintaners to overrides the language definition by adding the following lines to their .gitattributes file :
*.bas linguist-language=VB6
*.cls linguist-language=VB6
*.frm linguist-language=VB6
*.frx linguist-language=VB6

▶More about overrides

I've managed to run the Linguist project on my machine using WSL, so I should be able to make a PR for this issue shortly, but looking more closely at the documentation for VB6, I've found a much larger list of files that would be part of a VB6 project: Project File Formats.
Among theses file types, if we exclude the extensions already associated to VBA, I've found that only the following extensions actually use the VB6 syntax:

.ctl (User Control file)
.dsr (Active Designer file)

The other ones are binaries or follow other syntaxes which tells me that we should exclude them from being recognized as VB6 by Linguist.
For instance, .vbp files are Visual Basic Project files and they contain the project configurations, but that doesn't mean that they should be identified as VB6. They are actually much closer to an INI file than to VB6 code1. For comparison, .vbproj files are VB.NET project files and they are identified as XML instead of VB.NET (as they should be).
For those reasons, I'm goint to use .ctl and .dsr  for the extensions exclusively associated to VB6 in the PR I'll submit.

[1] A .vbp file is essentially a collection of key-value pairs, just like an INI file, but .vbp files don't support comments apparently ([source](https://www.vbforums.com/showthread.php?725497-RESOLVED-Comment-Line-in-VBP-File)) and even if they do support tags ([source](https://www.vbforums.com/showthread.php?893310-Can-someone-tell-me-about-undocumented-sections-in-VBP-files)), it's undocumented, so I wouldn't go as far as to say that a .vbp file can be identifed as INI.

Now that the PR was merged, this issue can be closed. However, it will still take some time before the change goes live on GitHub:

Note: New languages will not appear in GitHub's search results for some time after the pull request has been merged and the new Linguist release deployed to GitHub.com. This is because GitHub's search uses go-enry for language detection but tends to lag behind Linguist by a few weeks to months. This in turn requires an update to the underlying search code once go-enry is inline with Linguist.
source

Now that the PR was merged, this issue can be closed. However, it will still take some time before the change goes live on GitHub:

Note: New languages will not appear in GitHub's search results for some time after the pull request has been merged and the new Linguist release deployed to GitHub.com. This is because GitHub's search uses go-enry for language detection but tends to lag behind Linguist by a few weeks to months. This in turn requires an update to the underlying search code once go-enry is inline with Linguist.
source

Thank you very much. Now VB6 can be recognized. I look forward to see Visual Basic 6.0 on some of my projects. The VB6 community will much appreciate this !

WOW, I'd just like to second the effort to have VB6 recognized as a separate language.  It certainly isn't VBA, even though it has many similarities.  There continues to be a quite active VB6 community which should be given its due respect.  Sincerely, Elroy Sullivan, PhD.

WOW, I'd just like to second the effort to have VB6 recognized as a separate language. It certainly isn't VBA, even though it has many similarities. There continues to be a quite active VB6 community which should be given its due respect. Sincerely, Elroy Sullivan, PhD.

Indeed! Thank you Dr. Sullivan !

I've managed to run the Linguist project on my machine using WSL, so I should be able to make a PR for this issue shortly, but looking more closely at the documentation for VB6, I've found a much larger list of files that would be part of a VB6 project: Project File Formats.
Among theses file types, if we exclude the extensions already associated to VBA, I've found that only the following extensions actually use the VB6 syntax:

.ctl (User Control file)
.dsr (Active Designer file)

The other ones are binaries or follow another syntax which tells me that we should exclude them from being recognized as VB6 by Linguist.
For instance, .vbp files are Visual Basic Project files and they contain the project configurations, but that doesn't mean that they should be identified as VB6. They are actually much closer to an INI file than to VB6 code1. For comparison, .vbproj files are VB.NET project files and they are identified as XML instead of VB.NET (as they should be).
For those reasons, I'm going to use .ctl and .dsr  for the extensions exclusively associated to VB6 in the PR I'll submit.
[1] A .vbp file is essentially a collection of key-value pairs, just like an INI file, but .vbp files don't support comments apparently (source) and even if they do support tags (source), it's undocumented, so I wouldn't go as far as to say that a .vbp file can be identifed as INI.

Does the new modification make an association between ".vbp" and Visual Basic 6.0, or ".vbw" and Visual Basic 6.0?
If it doesn't, can you please make this possible? Because if you look at my own Visual Basic 6.0 projects, there are no ".ctl" or ".dsr" files at all.

VBP/VBW files are related to VB6, but they do not use the VB6 language. You wouldn't mark them as code because they're not code.
Once .ctl/.dsr is added, you'll be able to, I hope, manually mark repos as VB6 by overriding the language of .bas/.frm/etc with a .gitattributes like *.bas linguist-language=vb6
Asking for a feature that sees .vbp files and does that automatically is I think asking too much for a language Microsoft (which owns GitHub now) wants dead.

VBP/VBW files are related to VB6, but they do not use the VB6 language. You wouldn't mark them as code because they're not code.
Once .ctl/.dsr is added as a language actually called vb6, you'll be able to, I hope, manually mark repos as VB6 by overriding the language of .bas/.frm/etc with a .gitattributes like *.bas linguist-language=vb6
Asking for a feature that sees .vbp files and does that automatically is I think asking too much for a language Microsoft (which owns GitHub now) wants dead.

In an earlier talk here, @lildude pointed out that the linguist detects the extensions of the files, and not the content. Thus, the ".vbp" and ".vbw" are the only signatures that can be detected for Visual Basic 6.0. This is why I insist so much on the two extensions.

Right but it only applies the syntax highlighting to that file, and the syntax highlighting rules VB6 needs don't match vbp, there's no functionality to say 'Because this file has extension x, override default on extension y'
.ctl and .dsr are extensions that are only associated with VB6 and not VBA, and are actually VB6 language files. Therefore it makes the most sense to add them as a language and allow manual overrides, rather than hope for a major functionality addition from a Microsoft-owned company exclusively to support a language it's trying to kill.
I suppose you could do it with VBP/VBW instead but it's improper to define the wrong syntax highlighting for something. Since they're unlikely to add the auto-override, it shouldn't matter that most VB6 projects don't have user controls or are addins.

I understand the issue now. The problem with .ctl/.dsr is that they are not present in the majority of the VB6 projects. At this point in time maybe it is better to have the identification of VB6 projects even if the syntax highlighting does not "compute" yet.

I understand the issue now. The problem with .ctl/.dsr is that they are not present in the majority of the VB6 projects. At this point in time maybe it is better to have the identification of VB6 projects even if the syntax highlighting does not "compute" yet.

At this point in time maybe it is better to have the identification of VB6 projects even if the syntax highlighting does not "compute" yet.

Most definitely not. Syntax highlighting is the primary motivator for adding support for a language for most contributors. Knowningly and deliberately getting this wrong would defeat that purpose and people will be very vocal about it when they notice it's wrong. This will result in them opening issues here, only for us to redirect them to the grammar maintainer who will rightly point out the files aren't written in the language the grammar is written for.
The approach taken is the best compromise. If you are happy for the wrong syntax highlighting, then you can make that change with an override without it affecting everyone else.
The next best approach would be to add a heuristic that can be used to differentiate between the languages of a shared extension.
If you can come up with a regular expression that can be used to correctly and reliably differentiate the content of the VB6 files from the VBA or other similar languages that share the same extension, please feel free to open a PR adding this to the heuristics.
Until then, the only option is a manual override once the next release of Linguist has been deployed to GitHub (planned for mid Nov after GitHub Universe).

The only way to properly distinguish between Visual Basic 6.0 and VBA is to consider the ".vbp" and ".vbw" extensions. The syntax highlighting on the other files (.bas, .frm and so on) can remain as in VBA because it is BASIC after all.

The only way to properly distinguish between Visual Basic 6.0 and VBA is to consider the ".vbp" and ".vbw" extensions.

Indeed, but we'd need to somehow identify the language of the content to differentiate the languages who share the same extension. This is where the heuristic comes in. In short: codify how you would identify the language of the file with either extension if you were presented it in isolation. (Linguist looks at files in isolation).
I know nothing about VB6 and VBA but from what I've read, the languages are almost identical so a heuristic is going to be very challenging to come up with, but we'd certainly accept a PR that succeeds in doing this.

There is one more difference in VB6 in the second line of frm files is the text Begin VB.Form.

The .cls file is also different.
VB6:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "Class1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False

VBA:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "Class1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False

That is true... you could reliably distinguish by that.
But, that's still a new feature, isn't it? Linguist doesn't go by the actual code, just the extension.
This comes up with twinBASIC, a very advanced project to create a true successor to VB6. The language is 100% compatible with VB6/VBA6 and VBA7 (minus GoSub which isn't implemented yet), yet even when I haven't added any of the new syntax/keywords it supports, just an untouched VB6 import, it doesn't detect .twin files as VBA, I have to add a .gitattributes specifying that's the syntax highlighting that should be applied. (If anyone hasn't followed the news on this, the project is incredibly far along, just needs some more work on the GUI and controls support, which have basic support but not complete support, but can already compile large, complex projects and has many new features, like 64bit exes, generics, bitshift operators, new assignment operators, in-language interface definitions, AddressOf on class members, multithreading support (via API for now), and native mode support (can create kernel mode drivers).
So anyway, you could distinguish them independently of extension-- for .cls and .frm at least-- but does that feature even exist?

But, that's still a new feature, isn't it? Linguist doesn't go by the actual code, just the extension.

Nope. Linguist looks at some of the content via the heuristics (ie regular expressions) and tokenisation by the classifier but only after at least 2 languages have been identified by the extension.
Both classification methods require identifiable differences in order to detect the languages involved.

The language is 100% compatible with VB6/VBA6 and VBA7 (minus GoSub which isn't implemented yet), yet even when I haven't added any of the new syntax/keywords it supports, just an untouched VB6 import, it doesn't detect .twin files as VBA, I have to add a .gitattributes specifying that's the syntax highlighting that should be applied.

This will be because Linguist doesn't know anything about that extension so ignores the file.

So anyway, you could distinguish them independently of extension-- for .cls and .frm at least-- but does that feature even exist?

Yup. See above.
This whole VB-family of languages classification issue sounds like it's going to be a lot like the .h extension used by the C-family of languages which was a long battle until we finally resolved on the strategy in use and detailed in the troublshooting doc. If a similar approach can be found for these VB languages sand their shared extensions, then that would be great. If not, the only option is manual overrides.

TwinBasic also differs from VB6 and VBA in terms of the keywords: Module ... End Module Class ... End Class.
There is also a major difference: These are the file extensions - .twin

Sounds like TwinBasic could have it's own language entry, if it meets the documented popularity requirements and is the only user of the .twin extension.

Sounds like TwinBasic could have it's own language entry, if it meets the documented popularity requirements and is the only user of the .twin extension.

And where to read about the "documented popularity requirements"?

The very first sentence of the "Adding a language" section of the CONTRIBUTING.md file.

Not that popular yet, but it's still pre-release and I don't think most people know how far along it is... so many years of empty promises and projects abandoned early. And I don't know what the deal is with RadBasic... honestly looks suspect at this point. Zero updates in over a year, but still offering paid early access, which must have an NDA attached because nobody is saying a thing about it. Which is odd considering how impressive it looked for the early stage it was in for last update. And some of the things the developer has said don't inspire confidence.
But anyway, since the heuristic feature exists I can only assume there's resistance to implementing it? It's not like we discovered the differences in this 20 year old language yesterday, or that this issue hasn't been posted about for years.
Although I don't think it's possible to distinguish .bas, except in the case you could semi-reliably distinguish VBA7 if it used new features. Perhaps bas could default to VB6 unless it detects PtrSafe or LongLong?

FWIW, VBA has 2 data types and one keyword that VB6 doesn't have. Those were introduced with Microsoft Office 2010 for 64-bit support:

LongPtr. VBA now includes the variable type alias LongPtr. The actual data type that LongPtr resolves to depends on the version of Office that it is running in; LongPtr resolves to Long in 32-bit versions of Office, and LongPtr resolves to LongLong in 64-bit versions of Office. Use LongPtr for pointers and handles.

LongLong. The LongLong data type is a signed 64-bit integer that is only available on 64-bit versions of Office. Use LongLong for 64-bit integrals. Conversion functions must be used to explicitly assign LongLong (including LongPtr on 64-bit platforms) to smaller integral types. Implicit conversions of LongLong to smaller integrals are not allowed.

PtrSafe. The PtrSafe keyword asserts that a Declare statement is safe to run in 64-bit versions of Office.

Source: Miscrosoft Learn
The issue is that a lot of files might not contain those new types or keyword even when running on a 64-bit application, but that's better than nothing.

The .cls file is also different. VB6:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "Class1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False

VBA:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "Class1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False

@XusinboyBekchanov, so what you are saying is that those lines would not be valid inside a VBA .cls file, is that correct?

Persistable = 0  'NotPersistable
DataBindingBehavior = 0  'vbNone
DataSourceBehavior  = 0  'vbNone
MTSTransactionMode  = 0  'NotAnMTSObject

But anyway, since the heuristic feature exists I can only assume there's resistance to implementing it? It's not like we discovered the differences in this 20 year old language yesterday, or that this issue hasn't been posted about for years.

@fafalone, I don't think there is actual resistance, it's just that nobody has taken the time to contribute to the Linguist project to implement those heuristics yet.
As you mentioned and to add to the discussion, VBA has 2 data/variable types and one keyword that VB6 doesn't have. Those were introduced with Microsoft Office 2010 for 64-bit support:

LongPtr. VBA now includes the variable type alias LongPtr. The actual data type that LongPtr resolves to depends on the version of Office that it is running in; LongPtr resolves to Long in 32-bit versions of Office, and LongPtr resolves to LongLong in 64-bit versions of Office. Use LongPtr for pointers and handles.
LongLong. The LongLong data type is a signed 64-bit integer that is only available on 64-bit versions of Office. Use LongLong for 64-bit integrals. Conversion functions must be used to explicitly assign LongLong (including LongPtr on 64-bit platforms) to smaller integral types. Implicit conversions of LongLong to smaller integrals are not allowed.
PtrSafe. The PtrSafe keyword asserts that a Declare statement is safe to run in 64-bit versions of Office.

Source: Microsoft Learn
The issue is that a lot of files might not contain those new types or keyword even when running on a 64-bit application, but that's better than nothing.

There are also some differences (bas files can be distinguished in this way):
VB: Clipboard, App, Screen, Printer, ... and etc.
VBA: Excel, Word, ActiveDocument, ... and etc.

The .cls file is also different. VB6:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "Class1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False

VBA:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "Class1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False

@XusinboyBekchanov, so what you are saying is that those lines would not be valid inside a VBA .cls file, is that correct?

Persistable = 0  'NotPersistable
DataBindingBehavior = 0  'vbNone
DataSourceBehavior  = 0  'vbNone
MTSTransactionMode  = 0  'NotAnMTSObject

I don't know it's valid or not, but by default the VBA IDE generates code like this. And there is no option in the IDE to change this.

You can use VB6 for Office automation, so those will appear in it sometimes.
The others are pretty generic words, so while there's no builtin object, it's probably not uncommon to encounter those strings, so would have to be careful with exactly what you're looking for.

There are also some differences (bas files can be distinguished in this way): VB: Clipboard, App, Screen, Printer, ... and etc. VBA: Excel, Word, ActiveDocument, ... and etc.

There are also some differences (bas files can be distinguished in this way): VB: Clipboard, App, Screen, Printer, ... and etc. VBA: Excel, Word, ActiveDocument, ... and etc.

You can use VB6 for Office automation, so those will appear in it sometimes.
The others are pretty generic words, so while there's no builtin object, it's probably not uncommon to encounter those strings, so would have to be careful with exactly what you're looking for.
VBA will strip out the VB6 .cls properties, so even if you imported a class with them you don't have to worry about them appearing.

If the keywords are generic, then the language should be defined as VBA. If there is Clipboard, App, Screen, Printer, Persistable, DataBindingBehavior, DataSourceBehavior, MTSTransactionMode, VB.Form and etc then it should be defined as VB6.

I'm saying Clipboard, App, Screen, and Printer are common generic words, so some care needs to be taken to look for them only in language-specific implementations; look for Clipboard.SetText, App.Title, Screen.TwipsPerPixelX, etc. as those would be uncommon outside of VB6, since substitutes for them are less likely to implement the same syntax (although some might, for code portability reasons... have a Clipboard class module you can drop into VBA so your clipboard-using code has the same syntax as VB6).

@Gagniuc, with the new release, you might see the change if you push changes to one of your repos.

@Gagniuc, with the new release, you might see the change if you push changes to one of your repos.

If you look at any of the VB6 projects on my account, all of them say VBA, as before :P

If you look at any of the VB6 projects on my account, all of them say VBA, as before.

You need to push a change on the repo to trigger a new analysis by Linguist.

If you look at any of the VB6 projects on my account, all of them say VBA, as before.

You need to push a change on the repo to trigger a new analysis by Linguist.

Indeed it works
Absolutely wonderful. The Visual Basic community appreciates what you did very much :) Thank you!

Thank you!

Support has shipped. Closing.


feat: tsm compaction metrics via prometheus

Closes #20025

[x] Well-formatted commit messages
[x] Rebased/mergeable
[x] Tests pass

Tested as working:
> curl localhost:8086/metrics | grep storage_compaction
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 29778    0 29778    0     0  28.3M      0 --:--:-- --:--:-- --:--:-- 28.3M
# HELP storage_compactions_active Gauge of compactions (by level) currently running
# TYPE storage_compactions_active gauge
storage_compactions_active{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="1",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6"} 0
# HELP storage_compactions_duration_seconds Histogram of compactions by level since startup
# TYPE storage_compactions_duration_seconds histogram
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="1",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="0.1"} 0
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="1",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="1"} 1
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="1",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="10"} 1
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="1",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="100"} 1
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="1",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="1000"} 1
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="1",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="10000"} 1
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="1",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="100000"} 1
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="1",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="+Inf"} 1
storage_compactions_duration_seconds_sum{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="1",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6"} 0.399322906
storage_compactions_duration_seconds_count{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="1",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6"} 1
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="cache",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="0.1"} 0
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="cache",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="1"} 8
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="cache",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="10"} 8
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="cache",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="100"} 8
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="cache",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="1000"} 8
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="cache",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="10000"} 8
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="cache",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="100000"} 8
storage_compactions_duration_seconds_bucket{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="cache",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6",le="+Inf"} 8
storage_compactions_duration_seconds_sum{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="cache",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6"} 2.4615932029999996
storage_compactions_duration_seconds_count{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="cache",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6"} 8
# HELP storage_compactions_failed Counter of TSM compactions (by level) that have failed due to error
# TYPE storage_compactions_failed counter
storage_compactions_failed{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="1",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6"} 0
# HELP storage_compactions_queued Counter of TSM compactions (by level) that are currently queued
# TYPE storage_compactions_queued gauge
storage_compactions_queued{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="1",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6"} 0
storage_compactions_queued{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="2",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6"} 0
storage_compactions_queued{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="3",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6"} 0
storage_compactions_queued{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="full",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6"} 0
storage_compactions_queued{bucket="613e7d9a1e47191a",engine="tsm1",id="6",level="opt",path="/Users/sarnold/.influxdbv2/engine/data/613e7d9a1e47191a/autogen/6",walPath="/Users/sarnold/.influxdbv2/engine/wal/613e7d9a1e47191a/autogen/6"} 0


FE: responsive design for mobile

the navbar should probably collapse, the overflow on it is causing everything else to break

Without navbar:

the navbar should probably collapse, the overflow on it is causing everything else to break

Without navbar:

should be fixed https://github.com/webaverse/webaverse.com/compare/d624ccbf0075...8fbf9c43ef12

should be fixed https://github.com/webaverse/webaverse.com/compare/d624ccbf0075...8fbf9c43ef12


Updated project to Swift 5

I updated the project to support the latest version of XCode and Swift 5. OpenGL still produces warnings as it is deprecated.

Nice thank you!


Syntax error in Google Colab Support

ALL software version info

pyviz_comms: 0.7.5
panel: 0.9.7
jupyter: 1.0.0

Description of expected behavior and the observed behavior
The following code will produce a JavaScript error in Jupyter:
import panel as pn
pn.extension()
file_upload = pn.widgets.FileInput()
file_upload

results in:
Javascript error adding output!
SyntaxError: Unexpected token '?'
See your browser Javascript console for more details.

I believe this is due to a typo introduced in #61.
Stack traceback and/or browser JavaScript console output
Just for completeness. Not sure this is going to be of much help as the issue occurs in eval(js), see above.
SyntaxError: Unexpected token '?'
    at OutputArea.append_javascript (outputarea.js:763)
    at OutputArea.append_mime_type (outputarea.js:696)
    at OutputArea.append_display_data (outputarea.js:659)
    at OutputArea.append_output (outputarea.js:346)
    at OutputArea.handle_output (outputarea.js:257)
    at output (codecell.js:395)
    at Kernel._handle_output_message (kernel.js:1197)
    at proxy (jquery.min.js:10502)
    at Kernel._handle_iopub_message (kernel.js:1224)
    at Kernel._finish_ws_message (kernel.js:1016)

Which browser aare you using out of interest?

Should have checked this earlier but here's the browser compatibility for the ?? operator: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator

Oh, I was assuming I am on the latest Chrome but auto-update seems to be blocked by the corporate firewall and I am on Chrome 78. Guess I better update asap ... Thx

Let's keep this open, we should have the discussion on what the minimum browser versions should be


An option to also generate Project.intert when Release for Testing

Hello, I'm a seasoned (&retired) developer and try to study many Interpreter Compiletime and Runtime systems since the release of Smalltalk-80 The Language and its Implementation.
Would it be possible to support an option in Preferences, to also generate Project.intert when Release for Testing.
Also, the possibility for selecting which version (installed) of Inform utilities and compiler (maybe by pointing to directory) has to be used, in case for comparing Inform releases.
Thank you for consideration.

It unlikely that we'll add an option to generate the intert file from the front-end: there are just so many options with the command-line Inform tools, and it was never the intention that the front-end would support anything other than a small subset of them. You can tell what command line the front-end has used from the Results tab (in the Console section) and then use that to guide you as to what you want for a command line, using the documentation at https://ganelson.github.io/inform/
On the Settings tab there is already a drop-down to specify the version of the compiler tools to use, of the ones included in the latest builds of Inform 7. An issue to add a way to specify the compiler tools by directory is here: https://github.com/DavidKinder/Windows-Inform7/issues/74