Cannot read properties of undefined (reading 'catch')

cancel() function doesn't seem to return a promise, so catch will result in an error

https://github.com/FranckFreiburger/vue-pdf/commit/612cae27f33795ef2ca734d9675f4c6058f28d78

Thanks for quoting my PR #372，but when you call the browser to print, there will be blank pages on the basis of the original PDF. This problem still needs to be solved.

for this error message you need to change your package.json vue-pdf to "vue-pdf": "4.2.0", this will solve error on this issue title


Implementation of the feature for playing GIFs in full-screen preview

The feature for playing animated images (GIFs) in full-screen preview was implemented with the help of FLAnimatedImage high performance engine. You can find the details in the code comments.
Note: If you would like to merge this feature don't forget to run pod install to resolve the new dependency (FLAnimatedImage).
Basic usage:
You can enable/disable this feature by using a new property allowsAnimatedImages as shown in the next code sample:
CTAssetsPickerController *picker = [[CTAssetsPickerController alloc] init]; picker.allowsAnimatedImages = YES;
Result:

@storix Thanks for your great work! As it involve quite a lot of changes, I need time to study and validate your code before merging it to master. Hope you don't mind.

@storix I am very busy on my personal matter so I have no time to verify your improvement yet. This PR might not be merged within short period of time.

@chiunam It's ok. I understand.
By the way, I have made a few important changes to this feature: iOS 8 support is dropped because of the inefficiency of GIF type detection (just to know whether a current asset is GIF we must download the full-sized image data); and the entire feature is now optional with the help of CocoaPods subspec settings. So the code now is much more readable and clean.
To put it in simple words: when the users have a podfile edited like this:
platform :ios, '8.0'
pod 'CTAssetsPickerController',  '~> 3.3.0'

GIF support is disabled and all the dependencies required for this feature to work are not compiled.
To enable this feature we must add to the podfile the following line:
pod 'CTAssetsPickerController/GIF',  '~> 3.3.0'
That's it. With one-line addition all GIFs will be playable. And, as you might expect, to disable GIF support this line must be deleted.

Latest changes:

FLAnimatedImage engine for GIF playing is replaced with the YYImage framework so that support for the additional animated image formats (such as WebP and APNG) can be enabled in the future.

Sorry, development of this project is suspended. This PR would be merged.


Display multiple mpld3 exports on a single HTML page

I've been trying to work out how to export multiple individual figures to display them in a template using Flask. I think the solution is somewhere between the .fig_to_html and .fig_to_dict methods but I'm not JS-savvy enough to work it through.
There's a fuller description on this stackexchange question:
http://stackoverflow.com/questions/22981359/display-multiple-mpld3-exports-on-a-single-html-page
I'd be happy to submit an pull request to the docs if someone can explain what's needed.

@jakevdp I apologise for my ignorance and/or inability to find how to do this but how would I embed a json output of mpld3, using:
mpld3.save_json(fig, 'random_choice.json')

into an html slide deck? For clarity, I would rather not clip the json in to the html directly (as I want to be able to rerun my python script to obtain the plots). I'm guessing I'm just missing some basic json/html knowledge...

Yes, you'd have to write a one-liner to load the JSON into javascript, and then call mpld3.draw_figure(json)
A google search turned-up this: http://stackoverflow.com/questions/7346563/loading-local-json-file

I've been trying that (I really don't know what I'm doing here). So would
this be the line I need before your suggestion?
var json = $.getJSON("test.json");

Are there any libraries or js I need to put somewhere? (currently have
terrible WiFi so google-ing isn't that easy and I think that with a lot of
this explanations expect a certain entry level that I am not at :().
Thank you very much for your response! :)
On Thu, 5 Feb 2015 19:43 Jake Vanderplas<EMAIL_ADDRESS>wrote:

Yes, you'd have to write a one-liner to load the JSON into javascript, and
then call mpld3.draw_figure(json)
A google search turned-up this:
http://stackoverflow.com/questions/7346563/loading-local-json-file
—
Reply to this email directly or view it on GitHub
https://github.com/jakevdp/mpld3/issues/128#issuecomment-73091198.

I would use d3.json to load the json, since you'll need that anyway for mpld3.  Here is the javascript to do it:
      d3.json("test.json", function(error, json) {
        if (error) return console.warn(error);
        mpld3.draw_figure("mplplot", json);
      });

And here is a notebook that puts it together, which you will have to download and open with your own IPython because nbviewer is too paranoid to display it.

Thanks Abraham,
I'll try that out!
Vince
On Fri Feb 06 2015 at 8:31:54 AM Abraham Flaxman<EMAIL_ADDRESS>wrote:

I would use d3.json to load the json, since you'll need that anyway for
mpld3. Here is the javascript to do it:
  d3.json("test.json", function(error, json) {
    if (error) return console.warn(error);
    mpld3.draw_figure("mplplot", json);
  });

And here is a notebook that puts it together
https://gist.github.com/aflaxman/0966ebf06e23e13db1a1, which you will
have to download and open with your own IPython because nbviewer is too
paranoid to display it.
—
Reply to this email directly or view it on GitHub
https://github.com/jakevdp/mpld3/issues/128#issuecomment-73188947.

I am trying to display multiple htmltooltip plugin plots in a page. The plots shows up. But the HTMLtooltip plugin doesnt work.


How to get the redirect URL from SSH ?

Hello,
First of all thank you for your work, that's awesome !
I'm facing an issue which is probably pretty simple but I don't see any solution.
I'm running a python script on a raspberry pi via SSH so no webbrowser will open. How can I get the redirect url when the program asks me Enter the URL you were redirected to:  ?
If anyone has an idea about that it would be nice.
Thank you !

You are not the only one who needs this, see other open issues https://github.com/plamere/spotipy/issues/492, https://github.com/plamere/spotipy/issues/519


chore: set up CI on v1 branch

Set up GitHub Actions, update release script on v1

The github actions checks aren't present. Try adding a commit to see if that triggers the gh actions checks to run.


scope.$watch whats the point of initWatchVal?

When a scope.$watch is being wired up. The code goes
$watch: function(watchExp, listener, objectEquality, prettyPrintExpression) {
     var get = $parse(watchExp);
     ...
      var scope = this,
            array = scope.$$watchers,
            watcher = {
              fn: listener,
              last: initWatchVal,
              get: get,
              exp: prettyPrintExpression || watchExp,
              eq: !!objectEquality
            };

Sets watcher.last too be initWatchVal which is an empty function.
Then when the watcher gets invoked later on we have this code run
watch = watchers[length];
                  if (watch) {
                    if ((value = watch.get(current)) !== (last = watch.last) &&
                        !(watch.eq
                            ? equals(value, last)
                            : (typeof value === 'number' && typeof last === 'number'
                               && isNaN(value) && isNaN(last)))) {
                      dirty = true;
                      lastDirtyWatch = watch;
                      watch.last = watch.eq ? copy(value, null) : value;
                      watch.fn(value, ((last === initWatchVal) ? value : last), current);

So the the interesting line here is
watch.fn(value, ((last === initWatchVal) ? value : last), current);

This is what invokes our watch function function(newValue, oldValue, scope){} and if watcher.last is still equal to our empty function(initWatchVal) such as on the first run of the watcher it passes the current value as the oldValue.
This doesn't make sense to me. When the watcher is first created why isn't watcher.last set to the result of the watchExp? I.E the value of the watchExp at the time the watch is created? That is the last value of the function or property you are watching.
So instead of getting the real newValue and oldValue you just get currentValue, currentValue. In the first instance you should get newValue, (null or the true oldValue).
Why is this important?
If you have a callback like this
function(newValue, oldValue) {
   //do something to the dom here.
}

This code will execute regardless of if there has been a change or not since you wired up the watch. because if ((value = watch.get(current)) !== (last = watch.last)) ... currentValue is not equal to emptyFunction.
If you do this to stop that
function(newValue, oldValue) {
 if newValue != oldvalue
    //do something to the dom here
}

This wont fire on the first change because newValue and oldValue are the same.

angular have copy of your object or array to compare deep watch or watchCollection later, so they need this imo.

angular have copy of your object or array to compare deep watch or watchCollection later, so they need this imo.

Only if the objectEquality flag is set to true, otherwise, a verson of identity equality is used, which treats NaN values as equal.
I recall this had actually changed at some point (to make the initial watch value always undefined), and was shown to be a regression which broke apps, but I may well be mistaken about that. It may have been a slightly different effect than that.
Regardless, you don't really need to perform this test in your watch function --- if the watch listener fires, you can trust that your value changed in some way. If you discover that the callback fired incorrectly, it's worth filing a bug about that. But if your listener is called, you should generally trust that the value really did change.
@lgalfaso / @gkalpak what do you think?

@caitp appreciate the reply. The thing is though, if you are watching a simple value its watcher.last value is initially set to a reference to initWatchVal. So then when the first digest() is called after the watcher is wired up; it compares the currentValue -- if "Dog" !== initWatchVal then fire the watch function and provide the currentValue as the first parameter and as the second parameter (if watch.last is initWatchVal then provide currentValue "Dog") again.

I've created a plunkr that demonstrates this.
http://plnkr.co/edit/9P1IxBfNytedfH1sjKbT?p=preview
Should see in the console
MainCtrl init
app.js:16 Wiring up watcher
app.js:18 Watcher firing
app.js:19 newValue red
app.js:20 oldValue red

If it's needed I'll annotate a version of 1.4.1 with logs to show whats happening in the watcher code.

I am well aware of what the watcher code is doing.
This logic makes sure that the listener is triggered during the first digest, regardless of the value, once the value has stabilized. This is not a big, and there is no reason to test if that old value and new value are identical or not. You can always trust that the value has changed when the listener is called.

But the value never changes. It's 'red' and stays red and as you correctly point out regardless of the value the first digest triggers the listener and its associated on change function. What I am illustrating is you CAN NOT always trust that the value has changed when the listener is called because the listener is called regardless of a change on the first digest.
I'm essentially asking why is this the case? Why not parse the watchExpression when the watcher is created rather than calling the listener on the first digest?
We don't control when the first digest happens post render so what can happen is that a change does indeed happen before the first digest and then when the first digest happens we have no previous to compare it too. Therefore in the documentation where it says To detect this scenario within the listener fn, you can compare the newVal and oldVal. If these two values are identical (===) then the listener was called due to initialization.
That initialisation can happen post change and therefore by checking the equality we miss a true change.

This is how it works:
The watcher is always called once in the first digest after setting the watcher.
In this very first call, Angular has no way to know if the value has changed or not, as it is the first time it "computes" it, therefore there is no notion of "change" at that time, and no notion of "old" either.
Using initWatchVal internally is just an implementation detail to always force the first digest cycle to call the watcher. Using undefined instead of initWatchVal wouldn't do the job because the first observed value can be undefined and that wouldn't trigger the call.
In this first call of watcher, Angular gives you the "new" value in the "old value" parameter instead of initWatchVal because initWatchVal is just an internal implementation detail.
Fred

Regardless, you don't really need to perform this test in your watch function --- if the watch listener fires, you can trust that your value changed in some way.

@caitp, you probably mean something else, but by reading this I understanding that you claim the watch listener will never be called with newValue === oldValue (which is obviously incorrect).
--
@frfancha, I think @startswithaj is well aware of what is happening and why, and his question is:
Why not intialize watcher.last with watchExp(scope) (considering it the initial value and only call the watch listener if any future evaluation of watchExp(scope) returns a value that is actually different than watcher.last ?
@startswithaj, I don't have a good answer (since I wasn't around back when the whole watchers idea was shaping and going through all shorts of transformations, but here are a few (arbitrary) thoughts:

Your suggestion sounds reasonable to be (but I haven't really thought this through).

Making this change now would be quite of a breaking change (since a lot of apps rely on the watch listener being run at least once).

I wonder if the reason could be this: The implementor figured that it was a common usecase to register a watch listener and then call it once manually to perform some initial action, so instead of having people register a watch listener and call it, they decided it made more sense to call the listener upon registration as well.

An extra subjective observation: From my experience, implementations inside the Angular code-base are the way they are for a very concrete and well-thought reason more often than not. (Notice the _more often than not_ part.)
It is a very weak argument, but if I had to take a blind guess I'd say there is a reason behind it; we just need to find it :wink:

@caitp, you probably mean something else, but by reading this I understanding that you claim the watch listener will never be called with newValue === oldValue (which is obviously incorrect).

You've misread this. I'm saying that the test if (oldValue !== newValue) {} is redundant, because with the exception of bugs, the watch listener is called at appropriate times.

because with the exception of bugs, the watch listener is called at appropriate times

@caitp, I don't know what you mean by "appropriate times", but if you don't want the listener to be fired upon registration, then the first call (where indeed newValue === oldValue) will not be very appropriate :smile:
I've been in situation where the check was needed. (I even used to include it in all my listeners by default some time ago :))

I got curious, so git blame to the rescue:
Taking a look at how it wa before initWatchVal was introduced, it seems that forcing $watch to fire on first run was a conscious choice (at that point at least).
Now let's find out why this choice was made...
--
Wow, things were pretty different back then. It seems Angular had widgets and forms where ruling !
The FormController was using the scope's $watch to trigger all shorts of stuff, from parsing the model value to validating and setting the view value. So, it was indeed useful to have that run once upon registration.
Maybe $watch wasn't a general purpose watching utility meant for wide public consumption, but rather a means to two-way binding between the model and the view (in which case, running the listener at least once made sense and saved on boilerplate).
Which makes me think: Are things so diferent now ? What would happen to our forms/directives should we not run the watch listener once upon registration ?
--
Yeah, lot's of stuff would be broken (but not beyond repair).

OK, I think I've done as deep/back as I would like to go for now.
My final thoughts:

If implementing things from scratch I would definitely consider initializing watcher.last to the actual value.
Even in that case, there seem to be at least as many usecases demanding an initial call to the listeners as there are usecase needing the newValue !== oldValue check, so there would be trade-offs either way.
Considering how breaking a change it would be atm, I would rather leave things as is.

Note: I've not put my hands on any code, so there might be even more stuff breaking should we make this change.

Initializing the value by first evaluating it instead of using initWatchVal would also mean that the value would always be evaluated at registration time instead of later, "perhaps", in digest.
I say perhaps because you can remove the watcher in some cases before it has been called, in this case the first eval would be lost of time.
This has also the advantage that you can register watchers for which the observed "value" calls part of code not ready yet (functions defined later), the only necessary thing is that everything is ready when the digest begins.
In our real life applications, what you suggest as reason number 3 occurs really a lot and it is very convenient.
And "THE" scenario number one using "reason 3" is the link Angualr does between html and scope: when you display $scope.prop in html by using {{prop}}, this display action triggered at every change must be triggered to display the initial value of $scope.prop, even when $scope.prop never has never chnaged.
Fred
P.S. @gkalpak I know you know all this (much better than I ;-) ), but I write this hoping it can perhaps help people with less knowledge of internals

@caitp, I don't know what you mean by "appropriate times", but if you don't want the listener to be fired upon registration, then the first call (where indeed newValue === oldValue) will not be very appropriate :smile:

If you don't want it to be fired on registration, then this logic does exactly what they want it to do --- that's not what they're talking about.

It's not rocket science folks, this is a case of fighting the framework for no reason

@gkalpak your exactly on the money and I appreciate you going back through the history to try to explain it. You have understood entirely the core of my question. @caitp I'm not fighting the framework there are numerous stackoverflow questions asking why when a listener first fires the newVal and oldVal are the same. And why the listerner is firing when there is no change. Which it is.
If you have a directive that is used per element of an ng-repeat and you wire up a scope.$watch for each of these elements. Not only during the first cycle does it create the watch but it also imo unnecessarily calls the listener which slows everything down. There are many many many github projects dedicated to providing a faster version of angular 1.x ng-repeat.
I observed this phenomenon and I wanted to understand what was causing it. Nobody is trying to fight the framework. Going forward many many people are going to be using 1.x for the foreseeable future and the more people that have these discussions and have a true understanding of these bits of legacy code the better off we are all going to be going forward.
Things like this are very hard to explain and provide examples of. Platitudes like "it's not rocket science folks" don't really add to the discussion or further everyones understanding of the framework. "Just because it seems to work" is never a good answer.

Some more after the night...
In fact the digest mechanism is not designed at all to call watchers at every change (watchers are not called at every change), it is designed to call watchers at least once with the last stabilized value, even when this value has never changed, or has never been set.
Watchers not called at every change:
Suppose watcher1 set $scope.name to upper case, and watcher2 trims blanks from $scope.name.
If $scope.name is lower case with trailing blanks, one of the watcher will see the initial value, the other one will get the intermediary value (trimmed or upper), and both will see the last stabilized trimmed and upper value.
So the first change (trim or upper, depending of the order of calls in the digest) is only "seen" by one watcher.
It is even possible that a change doesn't call a watcher at all when the final stabilized value is the same as the last observed value for this watcher.
watcher1 sets $scope.name to 'Smith' (was 'Jones')
watcher2 sets $scope.name to 'Jones'
watcher3 on $scope.name won't even be called (in the cases where it is after watcher1 and watcher2 in the digest loop).
So watcher3 has never seen the change from 'Jones' to 'Smith'.
Then digest mechanism is not designed to call watchers on every change, but only at least once with the last stabilized value when this stabilized value has changed since last call or there was no last call (therefore the initWatchVal to ensure call in first digest).
Why that? Because "the" goal of this is to update html from $scope (or to update view from model if you prefer a more abstract language).
To do that, digest is exactly what we need:
-we don't care about "temporary" values, such as $scope.name already trimmed or upper but not both yet, we even prefer to not see them for performance reason (but sometimes we see them sometimes not depending of the order in digest).
-we must know the "initial" value to display it, even if no "change" has occurred.
Fred

@frfancha You are making a good point with this:

In fact the digest mechanism is not designed at all to call watchers at every change (watchers are not called at every change), it is designed to call watchers at least once with the last stabilized value, even when this value has never changed, or has never been set.

I think we can close this issue then. Or should we update the documentation to make this clearer?

I'm gonna close this issue. If anyone wants to update the docs, feel free to open a PR.


MicrosoftWebdriver.msi download location is invalid

The location specified in the default download.json for SeLion 1.1.0-SNAPSHOT is invalide

I have already fixed this locally. PR is pending

this is fixed in the latest 1.1.0-SNAPSHOT


Buffered Email Not Buffering

Hoping I could get some experts to look over my config file, as it doesn't seem to be working the way I was expecting. I'm using NLog 3.2.0 (the latest on NuGet) on an ASP.NET 3.5 website. I've got a mail target wrapped inside a BufferingWrapper, and was hoping it would take multiple NLog messages and put them into a single email (within the flushTimeout window). Instead I'm getting many emails with a single NLog line in each one (the NLog timestamp will be within a few hundred milliseconds among 20-30 emails). Are my expectations wrong, or is there something wrong with my config? I don't have any Flush() calls in my code. Are they necessary like in issue #171 ?
My NLog.config:
<targets async="true">
	<target xsi:type="BufferingWrapper" name="bufferedexchange" bufferSize="100" flushTimeout="5000">
		<target xsi:type="FallbackGroup" name="exchangefallback" returnToFirstOnSuccess="true">
			<target xsi:type="Mail" name="exchange"
<EMAIL_ADDRESS>				  smtpPassword="MyP@ssword"
				  smtpServer="smtp.company.com"
				  smtpPort="25"
				  smtpAuthentication="Basic"
				  enableSsl="true"
<EMAIL_ADDRESS><EMAIL_ADDRESS>				  subject="NLog Message"
				  body="${longdate} ${uppercase:${level}} ${message} ${newline}"
			/>
			<target xsi:type="Mail" name="exchange"
<EMAIL_ADDRESS>				  smtpPassword="MyP@ssword"
				  smtpServer="smtp2.company.com"
				  smtpPort="25"
				  smtpAuthentication="Basic"
				  enableSsl="true"
<EMAIL_ADDRESS><EMAIL_ADDRESS>				  subject="NLog Message (using smtp2)"
				  body="${longdate} ${uppercase:${level}} ${message} ${newline}"
			/>
		</target>
	</target>
</targets>

<rules>
	<logger name="*" minlevel="Warn" writeTo="bufferedexchange" />
</rules>

Thanks for your eyeballs.

The buffering target doesn't combine logs, it just buffers them and flushes them at specified intervals or size. There is currently no way to achieve what you what, without creating a custom target.

I have to mention that the docs are  confusing bout this:
https://github.com/nlog/nlog/wiki/Targets

BufferingWrapper - A target that buffers log events and sends them in batches to the wrapped target. Useful in combination with Mail target.

@dyardyGIT Please create new issue for your questions. But the reason why it is not working here is because FallbackGroup is used. BufferingWrapper writing directly to Mail will work.


Renew TLS certificate for CATE

Certificate will expire April 14.

[x] Generate new certificate signing request
[x] Open IMTD Jira ticket and attach CSR
[x] Convert certificate to PKCS12 format for the F5
[x] Package the certificate in PEM format for Key Vault
[x] Update certificate on the F5 and test
[x] Update the certificate in Key Vault and test

Hey Doug, any news from SSC yet?

Finally got the new cert from SSC this morning. Up to me now to reformat it for IMTD.

New certificate installed and tested. Good until April 2024.


[it] update queue link

https://github.com/kubernetes/website/pull/48706/files

Thanks for fixing this!
/lgtm
/approve


Create thread instead of comment

When adding a note to a MR I can also make this a thread which is showing as something that needs to be resolved before the MR will go through.
I can not find this in the Gitlab API documentation...? Any idea how that would be used?

If it's not in the API docs, then it's not (yet) something that we can use programmatically I guess.

Is that what you are looking for: https://docs.gitlab.com/ee/api/discussions.html#create-new-issue-thread

Ah, I guess it is more that:

Yeah, they are all the same thing but for different entities. Guess those thread related endpoint or not implemented yet. Always open for PRs, but I don't have time for it myself...

ok, you got me hooked, I am going to hack together a cli (like this) for my CI/CD pipeline:
And I really would love to have threads added to MR instead of just comments.

@kniec  @svanharmelen  is this issue still relevant? If i look at the implementation and the documentation the discussions functionality brings threads right?

Look like it with this: https://github.com/xanzy/go-gitlab/blob/master/discussions.go
I'll give it a spin - thanks!

Did you have a change to test this @ChristianKniep? Would be nice if we can close this one.

just passing by but can confirm this works as expected. When you use the discussion API to make a discussion (not attached to lines of code) on a merge request it makes an "unresolved" discussion.
Unrelated, but things like "person assigned this MR to <@person>" is apparently also a discussion entity & the discussion entity is not an "individual note" unless it's one of those "person assigned this MR to person" things...

Thanks for confirming! For now I'm to close this one... Feel free to open a new issue if any of the other finding you mentioned causes any issues.


Require as an object property being replaced

It looks like in the scenario:
var x = {
  require: 'x'
}

That is being replaced with the require identifier to:
var x = {
  $__require: 'x'
}

We should only be replacing require as an identifier expression within the scope rather.

You mean we should only replace require at the top level scope of the factory function?
SystemJS.registerDynamic('foobar', ['bar'], true, function ($__require, exports, module) {
  'use strict';

  // factory scope -> replace `require` with `$__require` within this scope

  var define,
      global = this || self,
      GLOBAL = global;

  var o1 = (function(require){
    // new scope, hence require identifiers should not replaced anymore if they are references to a local variable/param
    var foo = require('foo');
    return {
        require: '^foobar'
    };
  })($__require);

  var o2 = (function(){
     // new scope, but top level require is not hidden by a local variable/param. Hence replace `require` identifiers.
    var foo = $__require('foo');
    // object property keys should not be replaced, only assignments if necessary
    return {
        require: foo + $__require('bar')
    };
  })();

  return module.exports;
});

Or should we simple exclude the case that object property keys are replaced? The above logic would be more precise but we have to handle a lot of edge cases i think.

Thanks for the update here. I've included this fix in https://github.com/systemjs/babel-plugin-transform-cjs-system-require/commit/bb6a6caf93bcc8e4c8f5cbbaf7fe501c933c77e6.

@guybedford You're welcome! I've another idea which maybe could provide an abstraction of the more precise logic. I'll give it a try and give you some feedback.

Hi @guybedford. I've done some investigation and here's the result in a separate branch: https://github.com/systemjs/babel-plugin-transform-cjs-system-wrapper/commit/0baec5ab45a84249ba9495dcd899ba2dbf7976da
It removes the dependency to the cjs-system-require plugin, since the replacement is performed directly inside the cjs-system-wrapper plugin.
I don't know if the cjs require detection is bypassed with this solution (i think this was the initial goal of the require rename thing). But it seems that only identifiers with a reference to the factory require will be renamed.

Hint: As the test with eval('typeof require') == 'undefined' is not working anymore in this solution (nested scoped require identifiers will not replaced) i've fixed it with an != expression.

@jrauschenbusch thanks for looking into this... I forgot to update here though that with require replacement it is important to not actually do scope handling - this is what Browserify does and Webpack as well to my knowledge as we do need to support cases where the require statement is wrapped in a scoped function.


Increased test coverage.

Hello @jackton1! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file model_clone/tests.py:

Line 152:101: E501 line too long (106 > 100 characters)
Line 153:101: E501 line too long (106 > 100 characters)
Line 304:1: W293 blank line contains whitespace
Line 314:1: W293 blank line contains whitespace
Line 317:1: W293 blank line contains whitespace
Line 320:1: W293 blank line contains whitespace
Line 323:1: W293 blank line contains whitespace
Line 326:1: W293 blank line contains whitespace
Line 328:1: W293 blank line contains whitespace
Line 337:1: W293 blank line contains whitespace

In the file sample/migrations/0008_book_slug.py:

Line 17:101: E501 line too long (123 > 100 characters)


fix: Env should not be escaped

According to https://github.com/opencontainers/image-spec/blob/main/config.md:

Entries are in the format of VARNAME=VARVALUE. These values act as defaults and are merged with any specified when creating a container.

The VARVALUE part does not understand shell escape or quotes.

We should really have some tests for these, can you show an example?

Use --entrypoint env to skip mk-shell-bin's envScript, which overrides the environment variables from the image manifest.
cd examples/fly.io && nix run ../.. -- container copy shell && docker run --rm -it --entrypoint env shell:latest

• Building shell container ...
• Using Cachix: devenv
warning: creating lock file '/examples/fly.io/devenv.lock'
trace: warning: `vendorSha256` is deprecated. Use `vendorHash` instead
/nix/store/i98cgbww6qifd626wzvn8jyz00va80nz-image-shell.json
✔ Building shell container in 2.0s.
warning: creating lock file '/examples/fly.io/devenv.lock'
trace: warning: `vendorSha256` is deprecated. Use `vendorHash` instead
• Running /nix/store/amca1wlni4szd4p8drmf6accq31ml58n-copy-container /nix/store/i98cgbww6qifd626wzvn8jyz00va80nz-image-shell.json false

Copying container /nix/store/i98cgbww6qifd626wzvn8jyz00va80nz-image-shell.json to docker-daemon:shell:latest

Getting image source signatures
Copying blob 79833476e9bf done   |
Copying blob a460459aeca2 done   |
Copying config 3f15e603df done   |
Writing manifest to image destination
✔ Copying shell container in 2.8s.
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=f9ea7b473441
TERM=xterm
DEVENV_DOTFILE='/env/.devenv'
DEVENV_PROFILE='/nix/store/ra30qvay59hqy3j9fxwrb0ks20l6ifbw-devenv-profile'
DEVENV_ROOT='/env'
DEVENV_RUNTIME='/tmp/devenv-078a6e4'
DEVENV_STATE='/env/.devenv/state'
HOME=/env
USER=user

You can see the single quotes around DEVENV_ROOT and other environment variables.

This bug also affects docker exec because docker execdoes not useEntrypointnorenvScript`.
docker exec "$(docker run --detach --rm -it shell:latest sleep infinity)" env

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=661680970c87
DEVENV_DOTFILE='/env/.devenv'
DEVENV_PROFILE='/nix/store/ra30qvay59hqy3j9fxwrb0ks20l6ifbw-devenv-profile'
DEVENV_ROOT='/env'
DEVENV_RUNTIME='/tmp/devenv-078a6e4'
DEVENV_STATE='/env/.devenv/state'
HOME=/env
USER=user

You can see the environment variables are incorrect.

@domenkozar Can we fix this?

I'm afraid this will break other things, we for sure added escaping to fix something in the past.

I think it is never used to fix anything in the past
On Mon, Apr 8, 2024 at 1:29 AM Domen Kožar @.***> wrote:

I'm afraid this will break other things, we for sure added escaping to fix
something in the past.
—
Reply to this email directly, view it on GitHub
https://github.com/cachix/devenv/pull/1064#issuecomment-2042165372, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAES3OSE7KYFKJZ5QVOQUJDY4JIP3AVCNFSM6AAAAABFJ34RMOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANBSGE3DKMZXGI
.
You are receiving this because you authored the thread.Message ID:
@.***>

The current Env settings are simply broken. We did not notice it because they only take effect on docker exec, as docker run takes envionment variables from mk-shell-bin's envScript, not the image's Env.


Only Automatically Close Posting Window if Pasting Successful

Currently the posting window closes automatically when posting is initiated from the posting button or the context menu and:

The host page's tab closes
(or) Posting completes

We should change this to only close automatically in the event that the posting completes and the link is successfully pasted into the host page's document.

Agree. But if the action is always unsuccessful (like the Youtube case without a hacking patch), what should we do? Alert users something like inserting Privly link failed, please manually insert it?

We already have prompts telling them to copy/paste the link. They only see the prompts if the link is not auto-posting, so I think this is already good.

Downgraded to minor because this is less of an issue for Seamless.


Use Complement libraries

An experiement in using bits of Complement. Doesn't use all the machinery, as we don't deploy new containers for each test, but it's a start (uses must/match/client).

Doesn't use all the machinery, as we don't deploy new containers for each test, but it's a start (uses must/match/client).

Do we even want to do this? While we do have tests that leak state, the speed of running them locally is really valuable and it would be sad to have to wait for Synapse's docker container to start up over and over again.

Do we even want to do this?

Maybe in the future when we reuse containers. Right now, no.


[VCDA-3475] fix authentication issue with system admin refresh tokens by implementing fallback

when authenticating using refresh token, follow the following steps

authenticate as a system org user

if the above step fails, authenticate as a tenant user

this PR also fixes authentication based tests which were broken

This change is

pkg/vcdcapiclient/defined_entity.go line 1 at r1 (raw file):
Previously, arunmk (Arun M. Krishnakumar) wrote…
I am guessing this is extra content?

Yes, I deleted this file

This is already in CPI common library.


Bug Report: Web Developement Read More Button

Reproduction steps
When I clicked on the Read More button below the Web Development Section, it took me to a 404 error page.

Expected behavior
It should have taken me to the proper page without any error.
Actual Behavior
It actually showed me the following error page.

👀 Have you spent some time to check if this issue has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

I want this issue to be assigned to me. I'm a GSSOC'22 participant. I can work on this issue.

@Susmita-Dey  can u  define where you redirect the page so we check and if it appropriate we can assign you this issue.

@Susmita-Dey can u define where you redirect the page so we check and if it appropriate we can assign you this issue.

When I click on the READ MORE button it's redirecting me to an error page. But it should be redirected to a proper w3schools web development course page.

@Susmita-Dey you have been assigned this issue. You can start working on it. All the best.

@Susmita-Dey you have been assigned this issue. You can start working on it. All the best.

Thanks for assigning it to me.


Release/v0.6.0

Keyboard::new is now const
Layout and Scan Code Set are now const-generics, not arguments
Pause/Break and Print Screen now work correctly
KeyCode is now non-exhaustive
KeyState includes 'SingleShot' for keys with no break code
Add Colemak, Dvorak Programmer and DE layouts
MSRV increased to Rust 1.61

Did we actually remember to publish this? Repo needs tagging too.

Oops, sorry it seems I forgot to publish it. I have pushed the tag now as well.


Refactor and Improve Developer Experience

No documented behavior should be changed.

@MunifTanjim Are all these changes purely internal, or will they affect the public api at all?

Are all these changes purely internal, or will they affect the public api at all?

Anything documented in the */README.md files will keep working as expected. So it's all internal. That being said, if you are using something that's not documented, it might break.
@cseickel


Implement From<Signature> for PolyFuncTypeRV

On tket2 we used FunctionType::into::<PolyFuncType>() at various places that now require the row type variant.
There is an implementation of From<PolyFuncType> for PolyFuncTypeRV, but that requires chained intos that need to be given explicit types to compile.
It'd be nice to have a From<Signature> for PolyFuncTypeRV.

See https://github.com/CQCL/tket2/pull/497#discussion_r1684191298
https://github.com/CQCL/tket2/blob/4bd81c305cdb1d47fb898f02e06fe3838d6436c4/tket2/src/extension.rs#L75-L76

I did put in an impl From<Signature> for SignatureFunc but not for PolyFuncTypeRV - so, yes, fair enough. We can't combine these in some cunning way can we? e.g. impl<T: Into<PolyFuncTypeRV>> From<T> for SignatureFunc (I get a conflicting impls error for that and I'm not really sure why...)

I guess PolyFuncTypeRV: Into<PolyFuncTypeRV>, so it's colliding with the T: From<T> blanket impl.
We'll probably need to manual impls for NoRV and RowVariable variants.


Use Grafeas v1 API

Is your feature request related to a problem? Please describe.
Hi team,
We want to use Grafeas v1 API in our open source project (tekton chains) but it seems not available on pkg.go.dev.
Describe the solution you'd like
We notice that proto/v1/*_go_proto/ is ignored in the .gitignore file. Can we remove that so that pkg.go.dev is able to pick it up?
Describe alternatives you've considered
If not, what is the best way to import it in a project?
Thanks!

Hey @chuangw6 ,
Seems you're right. #540 should fix this and introduce the go protos you need. This will be auto-closed once it's merged.


Create NOTICES.md

Signed-off-by: John Mertic<EMAIL_ADDRESS>

Can you review @jorydotcom


Shubham b

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: devspaces-kubecon sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


有个问题，偶尔网页会白屏，图片加载不出来。

客户端是 Shadowrocket
服务端的配置是通过 nginx 转发请求道 v2ray，底层传输时 ws

nginx 配置
server {
  listen                443 ssl;
  ssl                   on;
  ssl_certificate       /etc/v2ray/v2ray.crt;
  ssl_certificate_key   /etc/v2ray/v2ray.key;
  ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers           HIGH:!aNULL:!MD5;
  server_name           mydomain
  location / {
    proxy_redirect        off;
    proxy_pass            http://v2ray:8888;
    proxy_http_version    1.1;
    proxy_set_header      Upgrade $http_upgrade;
    proxy_set_header      Connection "upgrade";
    proxy_set_header      Host $http_host;
  }
}

v2ray 配置
{
    "log": {
        "access": "/var/log/v2ray/access.log",
        "error": "/var/log/v2ray/error.log",
        "loglevel": "debug"
    },
    "inbound": {
        "port": 8888,
        "protocol": "vmess",
        "settings": {
            "clients": [
                {
                    "id": "xxxxxx",
                    "level": 1,
                    "alterId": 64
                }
            ]
        },
        "streamSettings": {
            "network": "ws"
        }
    },
    "outbound": {
        "protocol": "freedom",
        "settings": {}
    }
}

版本是 docker 上的最新版

error.log
2017/08/09 18:17:05 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Inbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF
2017/08/09 18:17:05 [Info]App|Proxyman|Outbound: failed to process outbound traffic > Proxy|Freedom: connection ends > context canceled
2017/08/09 18:17:05 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Inbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF
2017/08/09 18:17:05 [Info]App|Proxyman|Outbound: failed to process outbound traffic > Proxy|Freedom: connection ends > context canceled
2017/08/09 18:17:06 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Inbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF
2017/08/09 18:17:06 [Info]App|Proxyman|Outbound: failed to process outbound traffic > Proxy|Freedom: connection ends > context canceled
2017/08/09 18:17:07 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Inbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF
2017/08/09 18:17:07 [Info]App|Proxyman|Outbound: failed to process outbound traffic > Proxy|Freedom: connection ends > context canceled

2017/08/09 18:17:16 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Inbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF
2017/08/09 18:17:16 [Info]App|Proxyman|Outbound: failed to process outbound traffic > Proxy|Freedom: connection ends > context canceled
2017/08/09 18:17:17 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Inbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF
2017/08/09 18:17:17 [Info]App|Proxyman|Outbound: failed to process outbound traffic > Proxy|Freedom: connection ends > context canceled
2017/08/09 18:17:21 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Inbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF
2017/08/09 18:17:21 [Info]App|Proxyman|Outbound: failed to process outbound traffic > Proxy|Freedom: connection ends > context canceled
2017/08/09 18:17:44 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Inbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF
2017/08/09 18:17:44 [Info]App|Proxyman|Outbound: failed to process outbound traffic > Proxy|Freedom: connection ends > context canceled

2017/08/09 18:17:52 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Inbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF
2017/08/09 18:17:52 [Info]App|Proxyman|Outbound: failed to process outbound traffic > Proxy|Freedom: connection ends > context canceled

2017/08/09 18:18:20 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Inbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF
2017/08/09 18:18:20 [Info]App|Proxyman|Outbound: failed to process outbound traffic > Proxy|Freedom: connection ends > context canceled

017/08/09 18:20:22 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Inbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF
2017/08/09 18:20:22 [Info]App|Proxyman|Outbound: failed to process outbound traffic > Proxy|Freedom: connection ends > context canceled
2017/08/09 18:20:22 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Inbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF
2017/08/09 18:20:22 [Info]App|Proxyman|Outbound: failed to process outbound traffic > Proxy|Freedom: connection ends > context canceled

2017/08/09 18:21:06 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Inbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF
2017/08/09 18:21:06 [Info]App|Proxyman|Outbound: failed to process outbound traffic > Proxy|Freedom: connection ends > context canceled

2017/08/09 18:22:52 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Inbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF
2017/08/09 18:22:52 [Info]App|Proxyman|Outbound: failed to process outbound traffic > Proxy|Freedom: connection ends > context canceled
2017/08/09 21:17:33 [Info]Transport|Internet|WebSocket: failed to convert to WebSocket connection > websocket: not a websocket handshake: 'websocket' token not found in 'Upgrade' header

使用环境和log报错相同，请问解决了吗？

@YLaido 没有解决

我也遇到类似问题，用的是ws+nginx+tls，有时很正常，有时会出现这种
Proxy|VMess|Outbound: connection ends > websocket: close 1006 (abnormal closure): unexpected EOF


Many to Many Detach after loading relation doesn't detach in object

Laravel Version: 5.5.1
PHP Version: 7.1.6
Database Driver & Version: sqlite memory, mysql

Description:
Using ->detach() on either side of a many-to-many relationship after loading the relationship removes data from the pivot table but does not remove related objects from the relation collection.
Steps To Reproduce:
    // In the User class
    public function clients()
    {
        return $this->belongsToMany(Client::class);
    }

    // In the Client class
    public function users()
    {
        return $this->belongsToMany(User::class);
    }

I wrote a PHPUnit test case to demonstrate. My PHPUnit uses SQLite memory, but I don't think the database matters because the database part works as expected.
    /** @test */
    public function basic_user_client_detach_test()
    {
        $user = create(User::class);
        $clients = create(Client::class, [], 2);
        $user->clients()->attach($clients);

        // Important step - get clients in memory with certainty
        // If we skip this, all tests pass.
        $userClients = $user->clients;

        $user->clients()->detach([1,2]);

        // These pass, proving the records are detached in the database.
        $this->assertDatabaseMissing('client_user', [
            'client_id' => $clients[0]->id,
            'user_id' => $user->id,
        ])->assertDatabaseMissing('client_user', [
            'client_id' => $clients[1]->id,
            'user_id' => $user->id,
        ]);
        $this->assertEquals(0, DB::table('client_user')->count());

        // If we force the refresh with the following line, the next test passes.
        // $user = User::findOrFail($user->id);
        // Using $user->fresh() doesn't work as expected - clients stay in the user.

        // This fails, proving they're still in memory.
        $this->assertEquals(0, $user->clients->count());
    }

The same seems to be true if we use ->sync([...]) to remove related objects. They are removed from the pivot table but remain on the in-memory object's collection.

If you loaded relation it remains the same whatever you do because it's cached. You need to reload it explicitly.

So that's on purpose? Seems unexpected that I'd tell the framework to remove data from a model, the framework doesn't object in any way, yet the data is still there.

Collection (relation) is not updated once it's fetched. You need to load.


Agenda broken release

Hello, I've tried using your library, but I'm getting this error:

...\node_modules\sails-hook-jobs\node_modules\agenda\lib\agenda.
js:455
  this._collection.updateMany({_id: { $in: jobIds } }, { $set: { lockedAt: null } }, done);    // NF refactor
ed .update() 22/04/2015
                  ^

TypeError: Cannot read property 'updateMany' of undefined

Searching around I've found there are people talking and workaround this: https://github.com/rschmukler/agenda/issues/213
Is it possible to make the same workaround for this library?
Thanks!!!

Hi,
Thank you for the feedback.
I have published a new version 0.1.6 . This version has all dependencies updated and the new way to init agenda.
Try it and tell me if it's fix your problem.

I just updated to the 0.1.6 version and I'm getting the exact same error.
I tried deleting the node_modules folder and running another "npm install" to make sure the only version on the folder is the latest.
Also, I made sure that the agenda package is on its latest version too.
I don't know, what's wrong exactly.

It seems that the model I've been using was referencing the old connection. Now I'm having another issue, this doesn't to appear anymore.


raidboss: misreported tank buster in vanaspati

Description
According to a report from Overdrive on the ACT Discord, Vanaspati Terminus Snatcher Last Gasp is currently called out as an AoE even though it's actually a tank buster.
Additional information

https://github.com/quisquous/cactbot/blob/d51f16cb449033b073496c1c092502991b11c556/ui/raidboss/data/06-ew/dungeon/vanaspati.ts#L41-L49

Thank you for the report.  I have that in my notes too, so this is probably a copy+paste error.


Exception handling inside the External device subsystem

Provide an ability for the ExtDev to raise an AppExceptions in case of errors.

Already done. Have forgot to close earlier :(


unregister fields?

We have a form that dynamically changes without being completely unmounted/remounted. Is there a way to unregister fields that may have been required, and may no longer be required?
Thanks

hey @samlll42-github,
If you remove an input, it will get auto unregistered.
{willBeRemove && <input ref={register} name="test" />}

when willBeRemove set to false, the filed will be unregistered

oops, I didn't' read your question clearly, you want to unregister even a field still mounted. currently, there is no unregister method. Curious why you guys doing so?

good question :) We have a sign up form that switches mode and has different field requirements depending on the mode.

Just some thoughts: curious why not build two separate forms, if they completely different. If they are similar should be able to toggle the fields.

In our particular case we have just one field different out of a dozen...

if you have to restrict which field to validate, maybe this API will be useful.
https://react-hook-form.com/api#useForm
validationFields
take a look, see if this helps :)

is this doesn't, I can take a look into unregister and place in my todo list 👍

@samlll42-github is any of my suggestion helps for you?

going to close this issue now, feel free to open again for more questions

hi @samlll42-github FYI unregister function has been released https://github.com/bluebill1049/react-hook-form/releases/tag/v3.18.2

Just saw that! that's great thanks. We were having other problems with isValid but it looks like there has been a few fixes applied. Will give the latest release a shot. Thanks again for all the work!

my pleasure, feel free to reopen issues. I will follow up 🙏


predicate_kwargs_maker optional argument for add_data_row_predicate

If the row predicate needs a more complex arugment list than just row, then the predicate_kwargs_maker can accept a function that converts a dat object into a dict that can be unpacked to predicate. The example is here.
The code slice is this
def make_kwargs_for_min_max_check(dat):
    full_parameters = input_schema.create_full_parameters_dict(dat)
    return {"min_adjuster": full_parameters["Minimum Nutrition Adjustment Factor"]}
def min_max_predicate(row, min_adjuster):
    # this function is different from the default predicate - it returns True for success and the error message
    # failure
    if row["Max Nutrition"] >= row["Min Nutrition"] * min_adjuster:
        return True
    return f"Min Nutrtion of {row['Min Nutrition'] * min_adjuster} is bigger than {row['Max Nutrition']}"
input_schema.add_data_row_predicate(
    "categories", predicate_name="Min Max Check",
    predicate=lambda row, min_adjuster: row["Max Nutrition"] >=
                                        row["Min Nutrition"] * min_adjuster,
    predicate_kwargs_maker = make_kwargs_for_min_max_check,
    predicate_failure_response = "Error Message" # indicating that this is a non-typical predicate
)

The function make_kwargs_for_min_max_check will be called exactly once per call to input_schema.find_data_row_failures to create the kwargs dict this is in turn unpacked when predicate is called.

Note that this gets tricky enough that we probably need a handle_exceptions_as_row_failure argument, because if the call to make_kwargs_for_min_max_check fails, then we only have two choices

throw the exception - this will mean that find_data_row_failures will be unable to check all the predicates, since it crashed on the first row predicate.
treat a thrown exception as a row predicate failure.

As of 94978c9 the second is the default behavior.

Finally - might need some fancy reporting when the predicate_kwargs_maker fails with an exception. Killing all the rows is perhaps excessive. Can we report it in some special manner that is row neutral?

Fixed in the branch merge above


defang compose down should not tear down stateful services without confirmation

Ideally, we'd create DB snapshots, to avoid data loss, but for now (V1) we can simply detect redis/postgres/… and prompt and/or require --force or something like that.

https://github.com/DefangLabs/defang-mvp/issues/1271


ci: Check make generate has being call

What this PR does / why we need it:
Not pushing generated artifacts is a big issue. This change add a check-gen make target and a sigthub action with it.
Special notes for your reviewer:
Release notes:

NONE

/cc @rhrazdil @davidvossel

/cc @rhrazdil

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
952

Relevant Lines:
1850

💛  - Coveralls

/ok-to-test


PageView with padEnds = false means you can't change to end page items

If a PageView has pages that don't use the entire viewport (viewportFraction < 1.0), and padEnds is false, then it's not possible to scroll to the end items in the list. They'll be visible, but the "current" page will always be the left-most page (see attached image).
If padEnds is true, then the current page will be centered and it's possible to scroll to each page.
Despite the scroll being blocked, perhaps it should still be possible to move the current page? i.e. make it possible for onPageChanged to get triggered for each page.
Steps to Reproduce

Execute flutter run on the code sample
Scroll to the right
You can never "select" the end items (depending on screen width) - i.e. onPageChanged will never run for the end items, nor will animateTo(), nextPage() etc work (see attached image)

Expected results:
Once the PageView has reached its limits and can no longer scroll, the current page should still move over (i.e. not be the left-most item)
Actual results:
Scrolling stops once the right-most limits are hit, which means you can see the end pages, but never actually "select" them (onPageChanged) will never trigger for them.

Code sample
import 'package:flutter/material.dart';
import 'dart:ui';

const Color darkBlue = Color.fromARGB(255, 18, 32, 47);

void main() {
  runApp(MyApp());
}

class AppScrollBehavior extends MaterialScrollBehavior {
  @override
  Set<PointerDeviceKind> get dragDevices => {
        PointerDeviceKind.touch,
        PointerDeviceKind.mouse,
      };
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark().copyWith(
        scaffoldBackgroundColor: darkBlue,
      ),
      debugShowCheckedModeBanner: false,
      scrollBehavior: AppScrollBehavior(),
      home: Scaffold(
        body: Center(
          child: MyWidget(),
        ),
      ),
    );
  }
}

class MyWidget extends StatefulWidget {

  @override
  State<MyWidget> createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  final _nums = [1, 2, 3, 4, 5];
  int _currIndex = 0;
  final _controller = PageController(
    viewportFraction: 0.25,
  );

  _onChangePage(int index) {
    setState(() {
      _currIndex = index;
    });
  }

  @override
  Widget build(BuildContext context) {
    return PageView.builder(
        padEnds: false,
        controller: _controller,
        onPageChanged: _onChangePage,
        itemCount: _nums.length,
        itemBuilder: (context, index) {
          return CircleAvatar(
            backgroundColor: (_currIndex == index) ? Colors.red : Colors.blue,
            child: Text("${_nums[index]}",
                       style: const TextStyle(color: Colors.white),),
          );
        }
      );
  }
}

Logs

no logs of note

nothing of note

[√] Flutter (Channel stable, 3.3.8, on Microsoft Windows [Version 10.0.19044.2251], locale en-GB)
    • Flutter version 3.3.8 on channel stable at C:\Users\d.connolly\Documents\Dev\flutter_windows_3.0.1-stable\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 52b3dc25f6 (12 days ago), 2022-11-09 12:09:26 +0800
    • Engine revision 857bd6b74c
    • Dart version 2.18.4
    • DevTools version 2.15.0

[√] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at C:\Users\d.connolly\Documents\Dev\AndroidSDK
    • Platform android-33, build-tools 33.0.0
    • ANDROID_HOME = C:\Users\d.connolly\Documents\Dev\AndroidSDK
    • Java binary at: C:\Program Files\Common Files\Oracle\Java\javapath\java.exe
    • Java version Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[X] Visual Studio - develop for Windows
    X Visual Studio not installed; this is necessary for Windows development.
      Download at https://visualstudio.microsoft.com/downloads/.
      Please install the "Desktop development with C++" workload, including all of its default components

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions).

[√] VS Code (version 1.70.0)
    • VS Code at C:\Users\d.connolly\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.52.0

[√] Connected device (3 available)
    • Windows (desktop) • windows  • windows-x64    • Microsoft Windows [Version 10.0.19044.2251]
    • Chrome (web)      • chrome   • web-javascript • Google Chrome 107.0.5304.107
    • Edge (web)        • edge     • web-javascript • Microsoft Edge 107.0.1418.35

[√] HTTP Host Availability
    • All required HTTP hosts are available

I can reproduce this issue using the code sample provided above.

recording
https://user-images.githubusercontent.com/88313112/203260218-0a782cb8-e85f-4336-8232-9dcb36d49e84.mp4

Labeling for further insight from the team.

flutter doctor -v
[✓] Flutter (Channel stable, 3.3.8, on macOS 13.0.1 22A400 darwin-arm, locale en-GB)
    • Flutter version 3.3.8 on channel stable at /Users/nexus/dev/sdks/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 52b3dc25f6 (13 days ago), 2022-11-09 12:09:26 +0800
    • Engine revision 857bd6b74c
    • Dart version 2.18.4
    • DevTools version 2.15.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/213.7172.25.2113.9123335/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14B47b
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio
    • Android Studio at /Applications/Android Studio Preview.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[✓] Android Studio (version 2021.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[!] Android Studio
    • Android Studio at /Applications/Android Studio Preview 2.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[✓] Android Studio (version 2021.3)
    • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/213.7172.25.2113.9123335/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] Android Studio (version 2021.3)
    • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/213.7172.25.2113.9014738/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] VS Code (version 1.73.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.52.0

[✓] Connected device (3 available)
    • iPhone 14 (mobile) • 9A27FCE5-AA81-4334-A2C5-72723AE36A8B • ios            • com.apple.CoreSimulator.SimRuntime.iOS-16-1 (simulator)
    • macOS (desktop)    • macos                                • darwin-arm64   • macOS 13.0.1 22A400 darwin-arm
    • Chrome (web)       • chrome                               • web-javascript • Google Chrome 107.0.5304.110

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 2 categories.

[!] Flutter (Channel master, 3.6.0-7.0.pre.18, on macOS 13.0.1 22A400 darwin-arm64, locale en-GB)
    • Flutter version 3.6.0-7.0.pre.18 on channel master at /Users/nexus/dev/sdks/flutters
    ! Warning: `flutter` on your path resolves to /Users/nexus/dev/sdks/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutters. Consider adding /Users/nexus/dev/sdks/flutters/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/nexus/dev/sdks/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutters. Consider adding /Users/nexus/dev/sdks/flutters/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 2921ca0c48 (6 hours ago), 2022-11-21 21:43:26 -0500
    • Engine revision 8dd8e092e4
    • Dart version 2.19.0 (build 2.19.0-415.0.dev)
    • DevTools version 2.19.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/213.7172.25.2113.9123335/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14B47b
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio
    • Android Studio at /Applications/Android Studio Preview.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[✓] Android Studio (version 2021.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[!] Android Studio
    • Android Studio at /Applications/Android Studio Preview 2.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[✓] Android Studio (version 2021.3)
    • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/213.7172.25.2113.9123335/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] Android Studio (version 2021.3)
    • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/213.7172.25.2113.9014738/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] VS Code (version 1.73.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.52.0

[✓] Connected device (3 available)
    • iPhone 14 (mobile) • 9A27FCE5-AA81-4334-A2C5-72723AE36A8B • ios            • com.apple.CoreSimulator.SimRuntime.iOS-16-1 (simulator)
    • macOS (desktop)    • macos                                • darwin-arm64   • macOS 13.0.1 22A400 darwin-arm64
    • Chrome (web)       • chrome                               • web-javascript • Google Chrome 107.0.5304.110

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 3 categories.

This might be reated to this:

Still an issue


Show flag on input field after selecting country

Hi,
Is there an existing way to show the flag on the input field after selecting a country?
Regards,
Gerald

It is possible to do this, but it requires to write some code. Maybe I'll create an example and add it to the http://easyautocomplete.com website.

Hi,
Have you added this feature, as I can't find it on website. If not added yet, than can you please give me some tips that how can I add it
Thanks,


Merge pull request #8 from michellebaker1129/main

Merge pull request #7 from michellebaker1129/feature/add-html

Trying to get to the css part of the prework


OJ-2735 implements dequeue lambda and audit events table for test harness

Proposed changes
What changed
New test harness stack introduced including:

Audit events table to store audit events
Dequeue lambda and related infrastructure to receive messages from audit event queue and put them into the audit events table
Tests and linting config

Common-infra PR to export the AuditEventQueueArn
Why did it change
This is a long term solution for testing txma audit events
Screenshots

Issue tracking

OJ-2735

Checklists
Environment variables or secrets

[ ] Documented in the README
[x] Added to deployment repository
[x] Added to local startup repository

Other considerations

[x] Update README with any new instructions or tasks

Am sure you were not aware, we have the https://github.com/govuk-one-login/ipv-cri-templates this would have created a lot of the bootstrap code you've had to do here. You just need to point to a folder it will scaffold the template and directory structure, reading for you, it does readme, linting stuff and can scaffold lambda test for you as well.


Tools emit escape sequences when output is redirected

This makes it difficult to e.g. use a regular expression to find warnings/errors in the output.

c7b953b22fe9e3fcc441f9a4c48e8b8475a35d33


Cannot use custom font with RN >= 0.60 --template typescript. react-native.config.js ignored

I am trying to use a custom font in a freshly new React-native project made with the typescript template and I do not succeed to add a custom font family.
All the doc I found told me to use rnpm which has been now deprecated in favor of a react-native.config.js file in the root folder.
I therefore created this file in my project but I did not see anywhere where to tell the react-native builder to read it and therefore I get the error font_name not found
Has anyone any suggestion ?
React Native version:
System:
    OS: macOS 10.14.4
    CPU: (12) x64 Intel(R) Core(TM) i7-8700B CPU @ 3.20GHz
    Memory: 1.71 GB / 16.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 10.16.0 - /usr/local/bin/node
    Yarn: 1.12.3 - /usr/local/bin/yarn
    npm: 6.10.0 - /usr/local/bin/npm
  SDKs:
    iOS SDK:
      Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2
    Android SDK:
      API Levels: 23, 24, 25, 26, 27, 28, 29
      Build Tools: 27.0.3, 28.0.2, 28.0.3, 29.0.0
      System Images: android-27 | Google Play Intel x86 Atom, android-28 | Google Play Intel x86 Atom, android-Q | Google APIs Intel x86 Atom
  IDEs:
    Android Studio: 3.2 AI-181.55<IP_ADDRESS>56338
    Xcode: 10.2.1/10E1001 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.8.6 => 16.8.6
    react-native: 0.60.0 => 0.60.0
  npmGlobalPackages:
    react-native-cli: 2.0.1

Steps To Reproduce

react-native init your_project --template typescript
Create a folder assets/fonts and put all your custom fonts : (mine were Lato-(Regular,..).ttf)
Create a react-native.config.js in the root folder of your project as follow

module.exports = {
  project: {
    ios: {},
    android: {}, // grouped into "project"
  },
  assets: ['./assets/fonts'], // stays the same
  // commands: require('./path-to-commands.js'), // formerly "plugin", returns an array of commands
};

Use the font in the app Component as styling of you text
run react-native run-ios
You'll get an error "font Lato (in my case) not found"

You may have an error in path to /fonts. Try this: assets: ['./src/app/assets/fonts/']

Link the assets manually using react-native link. This will give you a warning saying

Group 'Resources' does not exist in your Xcode project. We have created it automatically for you.

After that, build again using react-native run-ios or whatever commands you use to build.

You may have an error in path to /fonts. Try this: assets: ['./src/app/assets/fonts/']

@lapucher That really depends on your file structure and where you place your assets.

@thehanimo Thank you, that did the job!

I am facing same issue in RN 0.60.4
System:
    OS: macOS 10.14.5
    CPU: (4) x64 Intel(R) Core(TM) i5-5250U CPU @ 1.60GHz
    Memory: 204.34 MB / 8.00 GB
    Shell: 5.3 - /bin/zsh
  Binaries:
    Node: 10.16.0 - /usr/local/bin/node
    Yarn: 1.17.3 - /usr/local/bin/yarn
    npm: 6.10.1 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2
    Android SDK:
      API Levels: 23, 24, 25, 26, 27, 28
      Build Tools: 23.0.1, 23.0.3, 25.0.0, 25.0.2, 26.0.0, 26.0.1, 26.0.2, 26.0.3, 27.0.0, 27.0.3, 28.0.2, 28.0.3
      System Images: android-28 | Google APIs Intel x86 Atom
      Android NDK: 20.0.5594570
  IDEs:
    Android Studio: 3.4 AI-183.6<IP_ADDRESS>22156
    Xcode: 10.2.1/10E1001 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.8.6 => 16.8.6
    react-native: 0.60.4 => 0.60.4
  npmGlobalPackages:
    create-react-native-app: 1.0.0
    react-native-cli: 2.0.1

My config looks like:
module.exports = {
    dependency: {
      assets: ['./Source/Resources/Fonts/']
    },
  };

When I run react-native link command, nothing happens.
This is my terminal output when I run rn link (I have added react-native link alias as rn in bash).
➜  keykeeper git:(project-setup) ✗ rn link
➜  keykeeper git:(project-setup) ✗ rn link
➜  keykeeper git:(project-setup) ✗ rn link

Please help

got the mistake,
Config should look like ::
module.exports = {
      assets: ['./Source/Resources/Fonts/']
  };

Instead of
module.exports = {
    dependency: {
      assets: ['./Source/Resources/Fonts/']
    },
  };

This should be mentioned in the doc.
And both react-native link & yarn react-native link work fine

Same Issue, but in my case, config, command and path all are same.
Created project using,
npx react-native init awesomeApp --template typescript
Directory structure

awesomeApp
|
+--android
+--ios
+--assets
|     |
|     +---fonts
|             |
|             + -- ProximaNova-Bold.ttf
+--react-native-config.js

module.exports = {
    project: {
        ios: {},
        android: {},
    },
    assets: ['./assets/fonts']
};

@Ravi448's solution worked for me

I got it working for RN v0.60.5 by doing these steps.
1- Created a file in the react-native.config.js in the root of the project.
2- Paste this below code into above created file
module.exports = {     project: {         ios: {},         android: {},     },     assets: ['./assets/fonts'] }; . // Note assets folder created at root level (assets->fonts->YOUR FONT FILE)
3- Link assets to your project by running react-native link
4- Run project react-native run-ios
hopefully it should work fine.

@alitele Thanks, man. It works.

Verify that you have actually fonts in the assets/fonts folder. For some reason I had moved/deleted them, and of course the react-native link command does nothing

I'll also try to add new font to my App. I've found this thread here while I searched for a solution which not use rnpm.
But one question here: Isn't react-native link deprecated now because of auto-linking feature of react?
Maybe somebody can drop some lines about to agree, or disagree to this (and why, or what's state of the art at this point.)

I am not an expert. But here is how I am thinking, react-native link is not necessary for libraries.
The libraries will link automatically. Libraries are loaded steps to auto-link. But fonts are not like that. Fonts don't know how to auto-link with the app.

follow the instructions for manual installation from repos like or search for installation instructions specific for android

@KSahithyan Ok, but as I remember in the right way, react-native link fully parse the library and try to link all it find... as react-native link bim-bom-my-library only the one library I've added as parameter.
Because AndroidX throw an warning if you have manually link something, the question is, if there is a way that I only link my fonts and not all the libraries via react-native link ?

got the mistake,
Config should look like ::
module.exports = {
      assets: ['./Source/Resources/Fonts/']
  };

Instead of
module.exports = {
    dependency: {
      assets: ['./Source/Resources/Fonts/']
    },
  };

This should be mentioned in the doc.
And both react-native link & yarn react-native link work fine

I've tried your solution, after which both the fonts inside android and ios folders have been copied over successfully. However I still wasn't able to use the font (fontFamily: 'Rubik' - In my case I was trying to import Rubik font).

I found that error

Link the assets manually using react-native link. This will give you a warning saying

Group 'Resources' does not exist in your Xcode project. We have created it automatically for you.

After that, build again using react-native run-ios or whatever commands you use to build.

Is there a way to connect without using link?

Is there a way to connect without using link?

link should not be necessary with RN >= 0.60


*: support encryption at rest

What have you changed?
Support encryption at rest.
What is the type of the changes?

New feature (a change which adds functionality)

How is the PR tested?

Unit test
Integration test

Does this PR affect documentation (docs) or should it be mentioned in the release notes?
Yes
Does this PR affect tidb-ansible?
Yes
Refer to a related PR or issue link (optional)
https://github.com/tikv/rust-rocksdb/pull/441

/run-all-tests


Use npx

What do you think about using https://www.npmjs.com/package/npx for local npm packages? IMHO. it would be a much nicer way of handling the situation.~, now that npx is included in npm by default...~
*edit: oops

Nice feature request, indeed! ;)
Though I don't know when I'll have a chance to implement it. Could you, please, try to make a pull-request for it? (with a couple of tests included)

I have very little experience with python so far, not sure if I could do it. Even working with the module is a struggle, here are a couple questions that I think would help me to integrate npx:

how to enable logging in case any of the commands in the filters fail? (or simply just seeing the commands and their output every time they are run would be great)
how to know in what current working directory the commands are run? Ideally I would like to be able to configure this to the directory where my package.json is.


[Bug] TouchEffect Command and LongPressCommand not triggered

Description
TouchEffect will not trigger Command and LongPressCommand in some case
Native (IsAccessibilityMode = false)

#
Double tap
Double tap and holding

Command
Trigger Command :heavy_check_mark:
Trigger Command :heavy_check_mark:

LongPressCommand
Trigger nothing :heavy_check_mark:
Trigger LongPressCommand :heavy_check_mark:

Command and LongPressCommand
Trigger Command :heavy_check_mark:
Trigger LongPressCommand :heavy_check_mark:

Tap event :

[0:] OnTouch = Down (IsAccessibilityMode = False)
[0:] OnTouch = Up (IsAccessibilityMode = False)
[0:] OnClick (IsAccessibilityMode = False)

Long press event :

[0:] OnTouch = Down (IsAccessibilityMode = False)
[0:] OnTouch = Move (IsAccessibilityMode = False)
[0:] OnTouch = Move (IsAccessibilityMode = False)
[0:] OnTouch = Up (IsAccessibilityMode = False)
[0:] OnClick (IsAccessibilityMode = False)

Talkback (IsAccessibilityMode = true)

#
Double tap
Double tap and holding

Command
Trigger Command :heavy_check_mark:
Trigger Command :heavy_check_mark:

LongPressCommand
Trigger nothing :x:
Trigger nothing :x:

Command and LongPressCommand
Trigger nothing :x:
Trigger nothing :x:

Tap event :

[0:] OnClick (IsAccessibilityMode = True)

Long press event :

[0:] OnTouch = Down (IsAccessibilityMode = True)
[0:] OnTouch = Move (IsAccessibilityMode = True)
[0:] OnTouch = Move (IsAccessibilityMode = True)
[0:] OnTouch = Up (IsAccessibilityMode = True)
[0:] OnClick (IsAccessibilityMode = True)

Keyboard navigation (IsAccessibilityMode = false)

#
Double tap
Double tap and holding

Command
Trigger nothing :x:
Trigger nothing :x:

LongPressCommand
Trigger nothing :x:
Trigger nothing :x:

Command and LongPressCommand
Trigger nothing :x:
Trigger nothing :x:

Tap event :

[0:] OnClick (IsAccessibilityMode = False)

Long press event :

[0:] OnClick (IsAccessibilityMode = False)

Keyboard navigation with Talkback activated (IsAccessibilityMode = true)

#
Double tap
Double tap and holding

Command
Trigger Command :heavy_check_mark:
Trigger Command :heavy_check_mark:

LongPressCommand
Trigger nothing :x:
Trigger nothing :x:

Command and LongPressCommand
Trigger nothing :x:
Trigger nothing :x:

Tap event :

[0:] OnClick (IsAccessibilityMode = True)

Long press event :

[0:] OnClick (IsAccessibilityMode = True)

Switch access (IsAccessibilityMode = false)

#
Double tap
Double tap and holding

Command
Trigger nothing :x:
Trigger nothing :x:

LongPressCommand
Trigger nothing :x:
Trigger nothing :x:

Command and LongPressCommand
Trigger nothing :x:
Trigger nothing :x:

Tap event :

[0:] OnClick (IsAccessibilityMode = False)

Long press event :

[0:] OnClick (IsAccessibilityMode = False)

Switch access with Talkback activated (IsAccessibilityMode = true)
We can't activate Switch access and Talk Back together

I am currently facing the issue that TouchEffect.LongPressCommand is not working for TalkBack and is even breaking the functionality of TouchEffect.Command. Please see the example app for reference.
XF Version: <IP_ADDRESS>21
XCT Version: 2.0.2


Filter estimate

What changes were proposed in this pull request?
This is a WIP PR.  In this version, we set up the framework to traverse predicate and evaluate the equality (=) expression.
How was this patch tested?
We just have a simple test case for now. More tests need to be added.

cc @wzhfy

Can one of the admins verify this patch?

cc @wzhfy   Please preview it and make comments.

This is a mistake.  I point to the wrong repository.


Run tests on travis

Run tests on all branches and pull requests.
Possibly closes https://github.com/TimonPost/crossterm/issues/100

Here is a build of this PR on Travis https://travis-ci.com/andy128k/crossterm/builds/119537026


Provide Anne with commit access

(Username will be given shortly.)

Anne’s username to set up commit access on ap210.org: @zw66

Invited @ZW66. Anne could you join the organization on this page (https://github.com/expresslang)? Then access will be granted. Thanks!

@zw66 already has access to the org and repo.


add "new feature or enhancement" as buildo issue

requirements

we need to have a new buildo issue that serves as the generic "new feature or enhancement" issue, which has:

mandatory requirements section
optional specs and misc sections
optional, but suggested, topic in the title

specs

add a button in the "new buildo issue" dropdown called "new feature or enhancement" (maybe a shorter but still correct name?)
remap the c shortcut to this actions, overriding the default create issue
create a template with sections as specified in the requirements above, in the order requirements, specs, misc
do not add any label
prepopulate the title with [_topic_] _title_ where topic is there to remind/suggest user that it is good to specify a topic in square brackets before the issue title

if feasible, make _topic_ already selected at the beginning so that users can start typing right away

I would add new feature and enhancement  as two different issue templates
Why not labels? I would add new feature and enhancement labels

CI: 33:70  error  Infix operators must be spaced  space-infix-ops

prepopulate the title with [topic] title where topic is there to remind/suggest user that it is good to specify a topic in square brackets before the issue title

isn't this valid in general for the issue templates?

I don't think so because we're using topics only for new macro features never for bugs/defects
PS: have a look at #18

@francescogior we treat new features and enhancement as the same thing, we did not see any value in separating further
also, no labels are needed because they are the standard, default type of issue
regarding the topic thing, I think it's less useful for defects / bugs as they are not typically nested/macro.. but it's not a rule and I don't have a strong opinion on this one. We can add it and see if/how people use it (not as part of this issue, feel free to open a new one for that)


Be able to get settings from runtime environment variable

Changes Unknown when pulling 27256fe1d531b988876305144e32bbcb474c4da3 on runtime_environment into ** on master**.

@pvalsecc can you have a look on it?

You could have used re.escape to continue have the char parameter.
Ship it

Yes, thanks for the information, but it's relay not needed :-), thanks :-)


Edrlab readium migration

Addresses https://github.com/edrlab/readium-desktop/issues/89

Note that this PR is based on https://github.com/edrlab/readium-desktop/pull/129
(this PR must be merged after the other one)

Update: now that readium-desktop is under /readium, I will update this Pull Request once the r2-xxx-js[-dist] repositories are moved too.

As it turns out, it was a good thing not "properly" renaming all occurrences of /edrlab to /readium, because the readium-desktop project will be renamed and moved back under /edrlab ownership.


Performance optimizations

New exploration schedule, better reporting metric, and other run-time optimizations

[ ] Need to test DRQN in case LSTMBlockFusedCell broke it


refactor(backend): combine logic for listTransactionLinks & listTransactionLinksAdmin

🍰 Pullrequest

Combine list transaction links and list transaction links admin
Issues

based on #2705

Todo

[X] None

TransactionLinkSummary.vue

Good catch regarding the Frontend - I think we should discuss this:
apolloQueryMock.mockResolvedValue({
            data: {
              listTransactionLinks: [
                  {
                    amount: '76',
                    link: 'http://localhost/redeem/ce28664b5308c17f931c0367',
                    createdAt: '2022-03-16T14:22:40.000Z',
                    holdAvailableAmount: '5.13109484759482747111',
                    id: 87,
                    memo:
                      'Hat jemand die Nummer von der Hexe aus Schneewittchen? Ich bräuchte mal ein paar Äpfel.',
                    redeemedAt: null,
                    validUntil: '2022-03-30T14:22:40.000Z',
                  },
             ...
             ]
             }})

I explicitly did not touch this test file to ensure that things are working as expected - but as far as I understand our test concept, we cannot detect if an API change has an inpact on our frontend, since we mock the results.
I'd like to discuss this and if we can have a solution, so our tests would detect this breaking change @Mogge @mahula  .

Regarding the schema tests in the frontend. In older tests, we do not test scheme aware, we just mock responses. In newer tests, where we use an apollo provider with a mocked client (e.g. admin/src/pages/Overview.spec.js, the tests are schema aware and find such problems as in this case. So with some more refactoring, we should achieve the goal to have schema aware unit tests in both frontends.

I actually did not break the frontend - my blind changes in the second attempt were correct; I broke the backend tho. Here I had the @Query decorator not adjusted to the new return type of the listTransactionLinks function. You can see the change in https://github.com/gradido/gradido/pull/2706/commits/75d23c5dafea30967d0a5bbf498c014beab86ee3

This cannot be type-checked by typescript and is not validated within the typegraphql framework on build time, but on runtime - which is the 400 error you encountered.

There are linting options tho according to my research: https://github.com/borremosch/eslint-plugin-type-graphql/blob/HEAD/docs/rules/invalid-decorated-type.md
I now tested this in the frontend and have a correct list displayed in both frontends:

I beleive this is therefore correctly working now.

Regarding the schema tests in the frontend. In older tests, we do not test scheme aware, we just mock responses. In newer tests, where we use an apollo provider with a mocked client (e.g. admin/src/pages/Overview.spec.js), the tests are schema aware and find such problems as in this case. So with some more refactoring, we should achieve the goal to have schema aware unit tests in both frontends.

As stated in my last comment the actual error was not a client side schema issue, but a server side schema issue and I believe it could not be detected on frontend tests even if they were schema aware. My first problem was a client-schema-problem tho and could have been detected that way.
I believe using the apollo-mock-client is very wise, but agree that we might rethink our seed & mock data concept before we start defining alot of data objects in our code. I made the following issue to address this shortcomings: https://github.com/gradido/gradido/issues/2736
Furthermore I want to apologize - since I did not run this, I externalized the effort in getting stable software to you @Mogge instead of doing the whole journey myself. I can see in this particular example that working blindly on the code without running it is not yet sufficient to ensure things are running correctly - and maybe never fully will. I promise to test things on a running instance in the future - especially when it comes to graphql related things. Sorry!


Delete Operations - marking cyphers for containers - Code review (Part 2)

Created by: @indyboox Jul 20 2022 at 11:52 CET
Last updated: Aug 03 2022 at 20:01 CET
ClickUp ID: IK-3639
Describe the task
For space delete operations (wiki) we need cyphers that would mark-to-delete/delete the objects involved in both the dependency dimensions (mentions to mark/delete in this other wiki).
Apart from deciding which way to go (mark or delete immediately), shall we consider one cypher that operates on the space selected and all the dependencies together, or multiple cyphers (by dependency type, by object type)?
Summary Table
Space entity
USED_BY Dep
Vertical Dep
Action (DELETE)
Customer
see Tenant
Many (container)
everything inside
AppSpace
see Tenant
Many (container)
everything inside
Application
see Tenant
Many (container)
everything inside
Tenant

AuthFlow
Content (dts, permissions, etc..)

everything inside
AppAgent
Deletes immediately
AppAgentCredential
AppAgent
de-referencing needed
AuthFlow
Deletes immediately
OAuth2Client
AuthFlow
de-referencing respective auth flows
OAuth2App
AuthFlow
de-referencing respective auth flows needed
PasswordCredential
Deletes immediately
EmailNotification
Deletes immediately
WebAuthnProvider
AuthFlow
de-referencing respective auth flows needed
Steps
create marking cyphers
create job cypher to delete marked nodes
Implementation
labels involved: Customer,AppSpace, Application, Issuer, Tenant
indirectly: AuthFlow, DigitalTwin, Permission, TOCONT
Find containers
we start from the selected container to delete and if we determine if there and which are its sub-containers.
params:
//AppSpace
:params
{
n_id:'aW5keWtpRGWAAAEPAAAAAA', //'-zRn9H8pSe2T6m4hvsc-GQ'
n_label:'AppSpace'
}
//Customer
:params
{
n_id:'aW5keWtpRGWAAAAAAAAADw', //'ZmSYx9ZpSu-tYIsGjSpC0Q'
n_label:'Customer'
}
2. return sub-containers ids cypher:
MATCH (n:Config{id: $ n_id})
WHERE  $ n_label IN LABELS(n)
WITH n
CALL apoc.path.subgraphAll(n, {
relationshipFilter: 'HAS>',
labelFilter: 'AppSpace|Application|Tenant',
minLevel: 1,
maxLevel: 4
})
YIELD nodes, relationships
WITH nodes
UNWIND nodes AS n
RETURN n.id
Wonka (average load):
AppSpace: Cypher version: CYPHER 4.4, planner: COST, runtime: PIPELINED. 3 total db hits in 66 ms.
Customer: Cypher version: CYPHER 4.4, planner: COST, runtime: PIPELINED. 33 total db hits in 2 ms.
Automation Test Customer (high load):
AppSpace: Cypher version: CYPHER 4.4, planner: COST, runtime: PIPELINED. 67 total db hits in 73 ms.
Customer: Cypher version: CYPHER 4.4, planner: COST, runtime: PIPELINED. 4432 total db hits in 25 ms.
NOTE: Here there would have been at least two alternatives (not using apoc), that were performing more poorly.
MATCH (n:Config{id: $ n_id})-[:HAS0..3]->(m:Config)
WHERE  $ n_label IN LABELS(n)
RETURN m.id
Wonka Customer:
Cypher version: CYPHER 4.4, planner: COST, runtime: PIPELINED. 119 total db hits in 187 ms.
MATCH (n:Config{id: $ n_id})-[:HAS1..3]->(m:Config)
WHERE  $ n_label IN LABELS(n)
WITH m
unwind LABELS(m) as lab
WITH m,lab
WHERE lab in ['AppSpace','Application','Tenant']
RETURN m.id
Wonka Customer:
Cypher version: CYPHER 4.4, planner: COST, runtime: PIPELINED. 133 total db hits in 91 ms.
Marking
The cypher sets the label and ttl property on the node(s) to mark. The ttl property holds the time when the node has expired its on-hold phase, in milliseconds since epoch.
MATCH(n)
SET n:_DELETE, n.ttl = timestamp() + 3600
Create an index on the time-to-live label and property.
CREATE INDEX _delete_ttl IF NOT EXISTS FOR (n:_DELETE) ON (n.ttl)
When using the procedure, the index is created 30 seconds after startup/new database created.
Remove node(s) that have passed the expiration time or length of time
MATCH (n:_DELETE) where n.ttl < timestamp() WITH n LIMIT 1000 DETACH DELETE n
Remove the marks from the nodes if rehabilitated
MATCH (n:_DELETE{id: $ id}) REMOVE n:_DELETE, n.ttl RETURN n
Final Cypher
input params.
//Customer
:params
{
n_id:'ZmSYx9ZpSu-tYIsGjSpC0Q',
n_label:'Customer'
}
2. mark config nodes to delete
MATCH (n:Config{id: $ n_id})
WHERE  $ n_label IN LABELS(n)
WITH n
CALL apoc.path.subgraphAll(n, {
relationshipFilter: 'HAS>',
labelFilter: 'AppSpace|Application|Issuer|Tenant',
minLevel: 1,
maxLevel: 4
})
YIELD nodes, relationships
WITH nodes,n
UNWIND nodes AS node
WITH apoc.coll.union(COLLECT(node),COLLECT(n)) AS nodes
UNWIND nodes AS n
SET n:_DELETE, n.ttl = timestamp() + 3600
RETURN n.id, [x IN LABELS(n) WHERE NOT x IN ['Config','_DELETED'] | x ][0] AS label
Cypher version: CYPHER 4.4, planner: COST, runtime: PIPELINED. 11347 total db hits in 250 ms.
We run the Cypher 4 from   with the ids of all containers at that level as input.
UNWIND  $ n_ids AS n_id
MATCH (n:Config{id:n_id})<-[r:USED_BY*]-(m:Config) //label add?
DETACH DELETE m
Test
For wonka, we get this from the marking cypher:
n.id
label
"aW5keWtpRGWAAAQPAAAAAA"
"Issuer"
"Issuer"
"ONoaGM7gTcWFZsR1Z2g1EA"
"Issuer"
"Issuer"
"aW5keWtpRGWAAAIPAAAAAA"
"Application"
"Application"
"igW0mhjaQLWq6q-WKj-RfA"
"Application"
"Application"
"bLYm0h5oQvSIl30eyafwBA"
"AppSpace"
"AppSpace"
"aW5keWtpRGWAAAAAAAAADw"
"Customer"
We then pass the ids to a run of the delete used_by cypher and one of the delete leaves.
create/delete dts: USED_BY needed in place?

Commented by: @indyboox Jul 28 2022 at 12:31 CET
cc @pepe-zamarripa from this morning huddle, put on hold for more design discussion when Laszlo and MB will be back.


[SPIKE] Web flashes white in between page rendering

We could probably find a possible solution here:
READ THIS

@annakukova could you take a look at this? Most probably we will need a background component matching the expected background color of the rendered page.


Parameters Dictionary (Utils)

Add a utility function to take parameters and store them in a dictionary to reduce floating arguments
Difficulty:

Low

Background:

In S2let we used structures to store all the parameters we need to specify the transform we want to do. We need a similar interface for S2Wav to handle parameters. A good way to do this is with Python dictionaries.

S2Let File:

The parameters we should include can be found in the s2let parameters structure here.
This is the type of interface you may want to consider.

S2Wav File location:

should be put in the test directory here

Notes:

There isn't a canonical approach for storing parameters in Python, however a dictionary is a good way. Feel free to search around and if you find a better way then great, just make sure we're consistent throughout!

@JessWhitney @jasonmcewen Ok it seems that we might want to pin this issue for later and just explicitly pass parameters to all the functions. For now I'll put a pin in this and move it into the ice-box for later down the line.


Example of sending a command

Hi,
Thank you for doing this work, it's really helpful.  I am using it successfully to parse received messages as per the example.  Would it be possible for you to provide a usage example for encoding a command to send?

Hello for the moment only tested ack and enable/disable digital outputs commands. I add a example in README.md

Thank you !


Refactor updating of var_type for JoinTerms

Trying to make the updating of JoinTerms a bit more reasonable. The goal is to eventually get rid of is_variable.
I had to make read_pairings pub to deal with a test that (rightfully) crashes now (another option would be to remove the test).

I like caching the read_pairings, and I like Parser's parse being simple again.
Removing is_variable is a welcome change.