Guidelines vs Rules

This is a problem that has been here since the beginning and after seeing more icons being "fixed" (and doing so myself) I feel the need to get this out of my head. Please keep in mind, that this is only my opinion and I understand that not everybody will feel the same but maybe this can at least spark some discussion:
In my opinion, our guidelines should not be declared as rules.
I feel the guidelines have been interpreted too much as rules, instead of guiding principles. I understand that trying to define the "feather" look in text is difficult, but this is even more reason to not put too much weight on our design guide. This is also reflected in Coles answer when asked to declare guidelines which used the words constraints and guidelines and put a clear distinction between them.
Let's take for example the shopping-cart and the shopping-bag icons:

To me one icon looks smaller than the other. Now let's take a look at the feather icons:

To me, these feel much more balanced, even though the sides of the cart poke out of the "safe-zone". In the world of typography this is better known as overshoot and over at feathericons.com similar decisions have been made along a lot of icons in order to keep a consistent visual size between icons. Now we can't be as exact with it as type designers, after all we are constraint to a 24x24 (mostly) pixel-perfect grid, however I believe that this was the main motivation for what Cole Bemis called "similar optical volumes". In fact, this principle hasn't even made it into our rules and I would understand why: It is practically impossible to measure. It cannot be a rule because it is inherently just a blurry guideline. But as undefined it may be, I believe it is the main driver to keep a consistent set of icons.
Please do not take this as personal criticism of anybody. I myself have "verschlimmbessert" some icons in a very similar way but I thought I could at least write down my thoughts on this.

I think you're definitely onto something, my two pennies on the matter:
I think Feather and Lucide's guidelines are equally outdated. I completely agree that some guidelines should be marked as requirements/constraints and some should be marked as recommendations, and we do definitely need to add some extra guidelines for sake of consistency.

As for our current guidelines, I think we can all agree that the following are trivial and must be defined as requirements:

Lucide: 1. Icons must be designed on a 24 by 24 pixels canvas.
Lucide: 3. Icons must have a stroke width of 2 pixels.
Lucide: 4. Icons must use round joins.
Lucide: 5. Icons must use round caps.
Lucide: 6. Icons must use centered strokes.

aka:

Feather: Every icon fits in a 24x24 canvas.
Feather: Every line and shape has a 2px center-aligned stroke with round joins and round caps.

As for the rest:

Lucide: 2. Icons must have at least 1 pixel padding within the canvas
Feather: Icons should have a 1px empty “safe zone” on the edges of the canvas:

Since we're not dealing with typography here and in certain scenarios SVG images are simply unable to overflow to allow for overshoot (and accidental clipping is obviously not an option), for purely technical reasons we have two possible courses of action:
A) we keep support for a 3px stroke width and make this a solid requirement
B) we drop support for any stroke width above 2px and make this a recommendation
In scenario A we need to fix icons that violate the (new) guidelines.
In scenario B we lose backwards compatibility.

Lucide: 7. Shapes (such as rectangles) in icons must have border radius of 2 pixels
Feather: 90° corners should have a 2px radius:

This is currently treated as a pretty loose recommendation, and should probably remain as such, but some icons might need some overhauling nonetheless to comply with this guideline better. E.g. there's no real reason why eraser doesn't have a 2px rounding:

I also think a list of possible exceptions could be compiled, such as: "Exceptions may apply, e.g. when two separate objects meet at an angle, or when this added rounding would be highly detrimental to the perceptibility of the icon."

Lucide: 8. Distinct elements must have 2 pixels of spacing between each other.
Feather: Distinct elements of an icon should be separated by at least 2px of empty space

This is currently treated as a very strong recommendation, only allowing for incredibly minor violations (in the 0.1px range). Again, this is something that's obviously very necessary for proper support of either a 3px stroke width or a 12px size, otherwise separate elements would bleed into each other.

Feather also has a few extra constraints and guidelines compared to Lucide:

Feather: No fills.

I mean, yeah, we should probably also put this in writing. :)

Feather: Icons should have similar "optical volumes"

I agree with @lscheibel that this is something that should be at the very least a recommendation and something that we strive for.

Some other things I think would be worth putting in writing are:

Icons should aim to have their center point (12,12) as the center of gravity.

I think this should be a no brainer, when used in toolbars, icons should appear in line regardless of orientation.

Icons should have similar visual density and level of detail.

Like visual weight, this is hard to measure but would improve the overall harmony of the icon set.

p.s. I didn't dwell too much on your example, as shopping-bag doesn't quite comply with Feather's own guidelines to begin with, since it has noticeably more visual weight than square does:

But yeah, shopping-cart also needs to be bumped up a bit.

For demonstration purposes, here's a screenshot of shopping-cart from Feather to illustrate why it needed to be fixed:

@lscheibel I agree partially with you on this. For how I see the guidelines is that we need to follow them much as possible but sometimes we can make exceptions. I think it is good we update some of the old icons. I agree on the part :

Feather: Icons should have similar "optical volumes"

But this was also not really the case with some of the "old" icons from feather.
For example the cog icon. I really loved the look of the feather cog icon, but it was really out off balance with the other icons. So we changed this. See for example this example, left: feather icons, right: lucide

So I think it is good we update them to improve visually balancing them out. aka "similar optical volumes"
I agree with @karsa-mistmere we should update the current guidelines. Maybe with with a section recommended and rules as what @karsa-mistmere mentioned.
What I not agree on is 1px save zone as a guideline instead of a rule.
The save zone makes sure the fully image of the icon will be shown, and the cases were the icon it need more space to render pixels it can take the save zone to show them. Sometimes on lower DPI screens the icon can look having trimmed edges.
For example this drawing I made (normal styling: lucide 24px, 2px stroke). 1st icon applied the save zone rule. 2nd and 3th icon are the same, but the second one is in a frame "cropped" like how svgs icons are displayed in browsers

On the 3th icons you can see that some pixels are rendered outside the canvas.
But overal I think it is good we discuss this, and I'm open to suggestions to change these guidelines/rules, the current ones I created quickly to have some to reference to. But we can improve this definitely. Maybe we can also add some 'Dos' and 'Dont's'. To make things more clear.
For the shopping-cart, I think we should update it to look better with others, I think we need to keep checking the icons side by side to keep consistency. So as we do in review for the new factory icon: #558

@karsa-mistmere I agree with almost all of your points. Btw I just chose the shopping-cart as an example because it was right next to the bigger one, the issue can be seen in quite a few places.

In scenario B we lose backwards compatibility.

It would be nice to know if anybody actually uses them with a 3px stroke-width especially considering, that a lot of icons were clipping at this size up until recently.

Icons should have similar visual density and level of detail.

Yes I agree here basically a 100%, however I think the example you chose also clearly shows where this rule/guideline meets its limits.

@ericfennis Yes, the feather icons are not perfect either and some changes were easy no-brainer fixes that simply made sense (like the triangles).

[...] some pixels are rendered outside the canvas.

However, in this example, doesn't this only happen when using the miter join? At least Chrome and Firefox (on Windows) seem to handle even circles that touch the edges of the svg viewbox nicely without clipping the interpolated pixel values.
These are screenshots taken of the feather "cloud" icon from a 1366x768 display in Chrome.

The other reason to make the "1px safe zone" a rule would be the 3px stroke variants.
I love the fact that one can use the icons at a larger scale and reduce the stroke-width to a value that still results in a pixel perfect display of the icon. In fact most of them are gorgeous at double the resolution, albeit not as practical.

When it comes to the 3px variant however, I've always thought of that as a gimmick. Most of the icons look pretty bad at 3px stroke width, beginning with actual interpolation issues where, due to the now not pixel perfect strokes, two touching lines add two half black pixels to a fully black one:
Lucide "image" 24px - This is actually pretty noticeable when viewed at 100%

I, therefore, would like to propose to disregard any issues stemming from increasing the stroke width above 2px. I would treat 3px as not officially supported but where it works, that's great. What do you think?

@lscheibel: What I think is a pretty legit use case of a stroke width greater than 2px (it doesn't have to be 3px, anything greater than 2px will break) is using multiple sizes of icons while keeping the relative weights the same, e.g.:

I've actually used Feather in one particular project just like this (24px/1.5px for menu items and buttons, 16px/2.25px for badges).

Also: image actually is still pixel perfect, the rendering issue you experience is unrelated to Lucide and is equally present in Feather:

(left: Feather, right: Lucide)

@karsa-mistmere Sorry my wording wasn't clear there: I meant the 3px stroke width not the icon itself, this effect can be seen in a lot of icons, everywhere two lines intersect/touch. My guess is that Chrome renders each SVG element and then simply adds each pixel layer on another.
Agreed, maintaining a consistent stroke width across different is a valid use-case but note that fonts also don't do this and the density of each icon actually increases dramatically. Additionally at least the 12px example looks blurry on my screen (if you wanted to stay on the pixel grid, you'd have to use this formula: 48 / desiredWidth = strokeWidth).
However considering that GitHub doesn't use pixel perfect icons at all and keeps a consistent stroke width between its 16px and 24px icons I might be putting way too much emphasis on that point.

If and when the guidelines are rewritten this thread should also be considered: #935

In this case, 3px+ are used to make it look like a fill.

Imitating fills with strokes is something that we do not allow, so it's a bit of a stretch to say that these "work". I could see merit in being looser with this guideline but this is definitely not the way to go.


There are restriction on the image size?

I have faced an error (below) while running run_on_test_videos.sh on my sequence of images
Wondering what may be, the only clue I got was tensorflow.python.framework.errors_impl.InvalidArgumentError: ConcatOp : Dimensions of inputs should match: shape[0] = [1,322,364,32] vs. shape[1] = [1,321,364,32]. Seems somewhere the shapes do not match, but I do not know from what, or what should I change in the code.
However, observing the images I put in the data/vids/'videoname', their sizes are 727 x 642. Then I realize that the error showed numbers close to the half of these image dimensions.
However, the problem do not seem to be with 727 (as ceil(727/2)=364 match in both shape[0] and shape[1] in the error description), so, the problem might be with the dimension 642, as 332 do not match with 321 (respectively 642/2 +1 and 642/2)
So, my question is: there is any known restriction on the image sizes? They must be odd? Which image sizes could make the approximation errors that break the program?
Knowing it Would help me to crop the images in a size the can work.
Thank you in advance.
The full error:
Traceback (most recent call last):
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1365, in _do_call
    return fn(*args)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1350, in _run_fn
    target_list, run_metadata)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1443, in _call_tf_sessionrun
    run_metadata)
tensorflow.python.framework.errors_impl.InvalidArgumentError: ConcatOp : Dimensions of inputs should match: shape[0] = [1,322,364,32] vs. shape[1] = [1,321,364,32]
	 [[{{node ynet_3frames/decoder/concat}}]]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "main.py", line 102, in <module>
    main(arguments)
  File "main.py", line 83, in main
    args.velocity_mag)
  File "/home/jonathan/Dropbox/UnB/motionMag/deep_motion_mag-master/magnet.py", line 279, in run
    out_amp = self.inference(prev_frame, frame, amplification_factor)
  File "/home/jonathan/Dropbox/UnB/motionMag/deep_motion_mag-master/magnet.py", line 235, in inference
    [amplification_factor]})
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 956, in run
    run_metadata_ptr)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1180, in _run
    feed_dict_tensor, options, run_metadata)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1359, in _do_run
    run_metadata)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1384, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InvalidArgumentError: ConcatOp : Dimensions of inputs should match: shape[0] = [1,322,364,32] vs. shape[1] = [1,321,364,32]
	 [[node ynet_3frames/decoder/concat (defined at /home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py:1748) ]]

Original stack trace for 'ynet_3frames/decoder/concat':
  File "main.py", line 102, in <module>
    main(arguments)
  File "main.py", line 83, in main
    args.velocity_mag)
  File "/home/jonathan/Dropbox/UnB/motionMag/deep_motion_mag-master/magnet.py", line 265, in run
    self.setup_for_inference(checkpoint_dir, image_width, image_height)
  File "/home/jonathan/Dropbox/UnB/motionMag/deep_motion_mag-master/magnet.py", line 209, in setup_for_inference
    self._build_feed_model()
  File "/home/jonathan/Dropbox/UnB/motionMag/deep_motion_mag-master/magnet.py", line 196, in _build_feed_model
    False)
  File "/home/jonathan/Dropbox/UnB/motionMag/deep_motion_mag-master/magnet.py", line 145, in image_transformer
    return self._decoder(self.texture_b, self.out_shape_enc)
  File "/home/jonathan/Dropbox/UnB/motionMag/deep_motion_mag-master/magnet.py", line 119, in _decoder
    enc = tf.concat([texture_enc, shape_enc], axis=3)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/util/dispatch.py", line 180, in wrapper
    return target(*args, **kwargs)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/ops/array_ops.py", line 1420, in concat
    return gen_array_ops.concat_v2(values=values, axis=axis, name=name)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/ops/gen_array_ops.py", line 1257, in concat_v2
    "ConcatV2", values=values, axis=axis, name=name)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/framework/op_def_library.py", line 794, in _apply_op_helper
    op_def=op_def)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/util/deprecation.py", line 507, in new_func
    return func(*args, **kwargs)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 3357, in create_op
    attrs, op_def, compute_device)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 3426, in _create_op_internal
    op_def=op_def)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 1748, in __init__
    self._traceback = tf_stack.extract_stack()

Hii
have you been able to execute the codes and got an output ?
If yes, how ?
kindly help I'm new to programming
just elaborating the steps would be enough
thanks

I have faced an error (below) while running run_on_test_videos.sh on my sequence of images Wondering what may be, the only clue I got was . Seems somewhere the shapes do not match, but I do not know from what, or what should I change in the code. However, observing the images I put in the data/vids/'videoname', their sizes are 727 x 642. Then I realize that the error showed numbers close to the half of these image dimensions. However, the problem do not seem to be with 727 (as ceil(727/2)=364 match in both shape[0] and shape[1] in the error description), so, the problem might be with the dimension 642, as 332 do not match with 321 (respectively 642/2 +1 and 642/2)tensorflow.python.framework.errors_impl.InvalidArgumentError: ConcatOp : Dimensions of inputs should match: shape[0] = [1,322,364,32] vs. shape[1] = [1,321,364,32]
So, my question is: there is any known restriction on the image sizes? They must be odd? Which image sizes could make the approximation errors that break the program? Knowing it Would help me to crop the images in a size the can work.
Thank you in advance.
The full error:
Traceback (most recent call last):
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1365, in _do_call
    return fn(*args)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1350, in _run_fn
    target_list, run_metadata)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1443, in _call_tf_sessionrun
    run_metadata)
tensorflow.python.framework.errors_impl.InvalidArgumentError: ConcatOp : Dimensions of inputs should match: shape[0] = [1,322,364,32] vs. shape[1] = [1,321,364,32]
	 [[{{node ynet_3frames/decoder/concat}}]]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "main.py", line 102, in <module>
    main(arguments)
  File "main.py", line 83, in main
    args.velocity_mag)
  File "/home/jonathan/Dropbox/UnB/motionMag/deep_motion_mag-master/magnet.py", line 279, in run
    out_amp = self.inference(prev_frame, frame, amplification_factor)
  File "/home/jonathan/Dropbox/UnB/motionMag/deep_motion_mag-master/magnet.py", line 235, in inference
    [amplification_factor]})
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 956, in run
    run_metadata_ptr)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1180, in _run
    feed_dict_tensor, options, run_metadata)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1359, in _do_run
    run_metadata)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1384, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InvalidArgumentError: ConcatOp : Dimensions of inputs should match: shape[0] = [1,322,364,32] vs. shape[1] = [1,321,364,32]
	 [[node ynet_3frames/decoder/concat (defined at /home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py:1748) ]]

Original stack trace for 'ynet_3frames/decoder/concat':
  File "main.py", line 102, in <module>
    main(arguments)
  File "main.py", line 83, in main
    args.velocity_mag)
  File "/home/jonathan/Dropbox/UnB/motionMag/deep_motion_mag-master/magnet.py", line 265, in run
    self.setup_for_inference(checkpoint_dir, image_width, image_height)
  File "/home/jonathan/Dropbox/UnB/motionMag/deep_motion_mag-master/magnet.py", line 209, in setup_for_inference
    self._build_feed_model()
  File "/home/jonathan/Dropbox/UnB/motionMag/deep_motion_mag-master/magnet.py", line 196, in _build_feed_model
    False)
  File "/home/jonathan/Dropbox/UnB/motionMag/deep_motion_mag-master/magnet.py", line 145, in image_transformer
    return self._decoder(self.texture_b, self.out_shape_enc)
  File "/home/jonathan/Dropbox/UnB/motionMag/deep_motion_mag-master/magnet.py", line 119, in _decoder
    enc = tf.concat([texture_enc, shape_enc], axis=3)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/util/dispatch.py", line 180, in wrapper
    return target(*args, **kwargs)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/ops/array_ops.py", line 1420, in concat
    return gen_array_ops.concat_v2(values=values, axis=axis, name=name)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/ops/gen_array_ops.py", line 1257, in concat_v2
    "ConcatV2", values=values, axis=axis, name=name)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/framework/op_def_library.py", line 794, in _apply_op_helper
    op_def=op_def)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/util/deprecation.py", line 507, in new_func
    return func(*args, **kwargs)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 3357, in create_op
    attrs, op_def, compute_device)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 3426, in _create_op_internal
    op_def=op_def)
  File "/home/jonathan/Dropbox/UnB/motionMag/momagenv/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py", line 1748, in __init__
    self._traceback = tf_stack.extract_stack()

Pls has this issue of yours been solved? I'm having the same issue now? Can you tell us how you can fix it? Thank you so much!


Remove version: Pidgin.Pidgin version 2.14.7

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

Close with reason: URL works;


Can't find variable: Icon

🐛 Bug Report

[Unhandled promise rejection: ReferenceError: Can't find variable: Icon]
at node_modules/react-native-eva-icons/icons/VolumeMuteOutline.js:13:46 in exports._default
at [native code]:null in performSyncWorkOnRoot
at [native code]:null in dispatchAction
at App.js:50:19 in firebase.auth.onAuthStateChanged$argument_0
at node_modules/@firebase/auth/dist/auth.esm.js:372:584 in En
at [native code]:null in flushedQueue
at [native code]:null in callFunctionReturnFlushedQueue

it's missing import package, add this
import { Icon } from 'react-native-eva-icons';


fix: more dep bumps

📲 What
fix: more dep bumps
🤔 Why
🛠 How
👀 Evidence
🕵 How to test
Notes for QA
✅ Acceptance criteria Checklist

[ ] Code peer reviewed?
[ ] Documentation has been updated to reflect the changes?
[ ] Passing all automated tests, including a successful deployment?
[ ] Passing any exploratory testing?
[ ] Rebased/merged with latest changes from development and re-tested?
[ ] Meeting the Coding Standards?

/azp run


Rich text editor icons not shown

Any idea why ?

Could you attach the log of Console and Network from "Developer Tools" (aka F12)

Console:
Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'run-ad-auction'.
Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'join-ad-interest-group'.
Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'browsing-topics'.
index.html:1 Access to font at 'https://notes.domain.com/components/assets/org.standardnotes.plus-editor/dist/font/summernote.woff2' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
vendor.css:1

       GET https://notes.domain.com/components/assets/org.standardnotes.plus-editor/dist/font/summernote.woff2 net::ERR_FAILED 200 (OK)
index.html:1 Access to font at 'https://notes.domain.com/components/assets/org.standardnotes.plus-editor/dist/font/summernote.woff' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
vendor.css:1

       GET https://notes.domain.com/components/assets/org.standardnotes.plus-editor/dist/font/summernote.woff net::ERR_FAILED 200 (OK)
index.html:1 Access to font at 'https://notes.domain.com/components/assets/org.standardnotes.plus-editor/dist/font/summernote.ttf' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
vendor.css:1

       GET https://notes.domain.com/components/assets/org.standardnotes.plus-editor/dist/font/summernote.ttf net::ERR_FAILED 200 (OK)

Network:
har.txt
All other editors' icons are fine.
BTW, reverse proxy is Caddy.

Add csp and cors header to your caddy files.
Access-Control-Allow-Origin *
Content-Security-Policy default-src https: 'self'; base-uri 'self'; child-src * blob:; connect-src * data: blob:; font-src * data:; form-action 'self'; frame-ancestors * file:; frame-src * blob:; img-src 'self' * data: blob:; manifest-src 'self'; media-src 'self' blob: *.standardnotes.com; object-src 'self' blob: *.standardnotes.com; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src * 'unsafe-inline';

Thanks! It seems to work by using excerpt found here: https://caddyserver.com/docs/caddyfile/directives/import#examples
Yet, should I try to confine/limit to some specific origin domain and methods?
Thanks again.

You could restrict to https://notes.domain.com if you concerned.
But * do no harm AFAIK.


GUACAMOLE-462: Add in-app player for session recordings.

This change adapts the player implementation from https://github.com/glyptodon/glyptodon-enterprise-player, adding a screen for playing back session recordings stored alongside history records. When an extension provides session recordings for history entries, a link to play back that recording directly and within Apache Guacamole is displayed in the "Logs" column of the history list:

Clicking on the link navigates to a screen with a player that loads the recording and allows it to be played back:

This can be used in practice by:

Installing the "guacamole-history-recording-storage" extension (from #698).
Configuring a connection for session recording by ...

... setting its recording path to ${HISTORY_PATH}/${HISTORY_UUID} and checking "automatically create path":

... or setting recording path to ${HISTORY_PATH} and the recording name to ${HISTORY_UUID}:

As long as Guacamole can read the contents of the path used by "guacamole-history-recording-storage", the recordings created through using that connection will appear alongside the corresponding history entries.

This looks really good! What an awesome feature. Considering the size of this feature, it might be good to get a second set of eyeballs on it as well. @necouchman any thoughts?

Sure, I'll try to look through it in the next couple of days.

Thanks!

My only question is regarding licensing - is there a reason to include it as MIT-licensed from Glyptodon, and not "donate" it back? I'm assuming there is, and that's fine, it's not a deal-breaker to me or anything like that, just curious what the rationale is.

I felt the easiest and best route forward was to copy the established nifty player under the terms of its existing license and include appropriate attribution. I can definitely follow up at my day job and ask/request that the company donate this entirely with an SGA, but this seemed the best way to make everyone involved happy: community gets awesome in-app player, company gets attribution. ;)

@mike-jumper Sounds good to me - I'm good with it, like I said, more curious than any heartache I had with it.
I'm good going ahead with the merge if @jmuehlner is :shipit:


UI Changes on the PIN Set page (Add/Remove the App Logo and Name)

@ellykits this page looks very different. We are missing the logo and App Name. The wording also seems off. Trying to find the mocks.

Can we update the Login page such that if the user enters the username and hits enter the cursor moves to the password, then if both the username and password are filled then we can shift the focus to the login button.
Pin on the "Set Pin" Should be in caps

Originally posted by @dubdabasoduba in https://github.com/opensrp/fhircore/issues/1956#issuecomment-1402062386

Comments from the PR
@ellykits

This design was updated as requested by the Design team. The Logo and App names were removed on purpose to fulfill the requirements @HenryRae can comment on this.
Here is the link to Figma

@dubdabasoduba

Interesting. This looks very weird in terms of consistency. I might be wrong but I think all the login and pre-login pages should have the same look and feel.

@HenryRae

The logo was removed on the set PIN to reduce clutter on any sort of destruction, this also allows us to have more room for the design to fully show when the keyboard is open on smaller screens. FYI this screen is right after the admin signing in and this page has the logo. so it's not necessary to show it on every screen after it.

cc: @rowo any thoughts?

@dubdabasoduba Agree with Henry. This is a utilitarian step and the user doesn't need to see the logo since they have already seen it, like Henry is saying.
In terms of priority, this isn't a high priority step since it is used by the admin user (who we train directly) and not the end CHW user.

@rowo This is noted. @dubdabasoduba We can close this issue as done.

Closing this. See the comment above.


Add note for xml docs + custom naming convention

There's currently no page for the naming conventions customization (since v10), but it's noted in the missing docs issue that Tobias made.
When that page is added, it'd be good to cross-reference link to this note from that side too.

@benmccallum Thank you for documenting this edge case. It helped me a lot. But I think the documentation is not 100% up-to-date with v12.7.0 anymore
In this screenshot you can see that NoOpStringBuilderPool can't be instantiated:

If I remove the ?? new NoOpStringBuilderPool(), the XML comments appear again. Only did a quick check though, so I don't know if there are any edge cases where this could become a problem
It seems that NoOpStringBuilderPool is private now, so that's why it can't be instantiated here.
Any idea how to best proceed here? Is my solution good enough, or should some sort of fallback still be implemented?
FYI @michaelstaib


e.preventDefault() not working

I tried to make a smooth navigation for anchors, but do not know why not interpret the preventDefault.
In previous versions, this if it worked perfect.

Hi, try comment out this :-)
// Restore "clickable parent links" in navbar
$('.hovernav a').click(function () {
window.location = this.href;
});

Hi Tomáš,
Thankyou. This was not working anyway.
And I just updated to Bootstrap 3.3.5
  From: Tomáš Frantík<EMAIL_ADDRESS>
To: BST-Plus/BST-Plus<EMAIL_ADDRESS>Sent: Wednesday, 4 November 2015, 16:26
Subject: Re: [BST-Plus] e.preventDefault() not working (#6)
Hi, try comment out this :-)
// Restore "clickable parent links" in navbar
$('.hovernav a').click(function () {
window.location = this.href;
});—
Reply to this email directly or view it on GitHub.


184 baseline recipes for cpc2

This is the baseline code required for the 2nd Clarity Prediction Challenge.
The baseline system is based on HASPI scores. The code will

i/ compute raw HASPI scores for the full CPC2 dataset
ii/ demonstrate a simple trained logistic regression model for mapping HASPI scores onto the sentence intelligibility scores
iii/ demonstrate how the various metrics used for ranking will be computed

The reference will also be documented with a README providing a walkthrough for installing data and running the baseline. There will also be a small set of demo data to allow a quick interactive run-through.

@ns-rse do you mind having a quick look over this. It's recipe code for the 2nd Prediction challenge that needs merging so we can do an official launch - already a bit behind schedule 😢 .  The only test failing is the CEC2 regression test with the precision error (which should just disable this perhaps).  Thanks! 😄

Also thought I updated the target value for the failing regression test with #189, perhaps a merge/rebase would pull that over (I think there might only be one or two files that have conflicts arising but not sure).

Test are failing again due to
=================================== FAILURES ===================================
___________________________ test_full_cec2_pipeline ____________________________

regression test output differences for tests/regression/test_full_CEC2_pipeline.py::test_full_cec2_pipeline:

>   --- current
>   +++ tobe
>   @@ -1,2 +1 @@
>   -Enhanced audio HASPI score is 0.2994140
>

Test are failing again due to
=================================== FAILURES ===================================
___________________________ test_full_cec2_pipeline ____________________________

regression test output differences for tests/regression/test_full_CEC2_pipeline.py::test_full_cec2_pipeline:

>   --- current
>   +++ tobe
>   @@ -1,2 +1 @@
>   -Enhanced audio HASPI score is 0.2994140
>

Yes, I corrected that already but perhaps this branch forked before that was merged (#189). Changing the value in this PR would fix it, happy to do that so all tests can run.

Re: separating the expected pass and expected fail conditions on tests —
this was recommended on a blog post
https://www.nerdwallet.com/blog/engineering/5-pytest-best-practices/
that makes a convincing argument. Ie leas to easier to read test results,
and cleaner signature.  Thanks for raising it but I’ll keep it as is for
now.  …

Thanks, that makes sense to parametrize the same behaviour in different tests to separate and make it easier to interpret failures.
Agree with taking time to find comonality that can be abstracted out. I struggled finding this previously but have a better overview and understanding now. Will write up a few issues.

Figured out why the test was failing, I'd made a typo in the regression test output filename when updating the number and messing around with different tests to check whether it was a CPU related issue. Should pass now along with all the new tests.
#203 written up (briefly) for speeding up the test suite.

the bigger problem we have with the tests is that some are very slow. We probably want to review them. Eg the slow ones are mostly signal processing pipelines that can be sped up without losing power by simply using shorter sample signals

Yeah, I can see that tests take about 7-min. Half of the time is used when installing packages and extras, and the rest is the tests time.

Yes, I'm working on speeding up the tests: down to 1m 30s so far and aim to
get under a minute, so then the 4 mins for installing dependencies and
packages will become the major bottleneck.
It seems that there's a GitHub action mechanism for caching the environment
state which perhaps could be used for both package installation and the
python environment
https://github.blog/changelog/2021-11-23-github-actions-setup-python-now-supports-dependency-caching/
https://stackoverflow.com/questions/59269850/caching-apt-packages-in-github-actions-workflow
This would allow a huge speed up given that our dependencies rarely change.
Jon
On Fri, 10 Mar 2023 at 10:34, Gerardo Roa Dabike @.***>
wrote:

the bigger problem we have with the tests is that some are very slow. We
probably want to review them. Eg the slow ones are mostly signal processing
pipelines that can be sped up without losing power by simply using shorter
sample signals
Yeah, I can see that tests take about 7-min. Half of the time is used when
installing packages and extras, and the rest is the tests time.
[image: image]
https://user-images.githubusercontent.com/17277802/224293643-ce98e47d-b7f0-497d-8320-065457adba6d.png
—
Reply to this email directly, view it on GitHub
https://github.com/claritychallenge/clarity/pull/202#issuecomment-1463604051,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACO7SJCBFOZA4XI5AYMCWI3W3L7VHANCNFSM6AAAAAAVS3N4QM
.
You are receiving this because you authored the thread.Message ID:
@.***>

--
Professor Jon Barker,
Department of Computer Science,
University of Sheffield
+44 (0)<PHONE_NUMBER>


UnsatisfiedLinkError when trying to override RegisterReceiver in Application inheritor

Android framework version
net8.0-android
Affected platform version
.NET 8.0.303
Tried on Android 12 (Samsung) and Android 14 (Pixel)
Description
Not a lot to describe: trying override RegisterReceiver(BroadcastReceiver? receiver, IntentFilter? filter) results in java.lang.UnsatisfiedLinkError.
The full message is:
java.lang.UnsatisfiedLinkError: No implementation found for android.content.Intent crc645671ac291747a43a.SampleApplication.n_registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter) (tried Java_crc645671ac291747a43a_SampleApplication_n_1registerReceiver and Java_crc645671ac291747a43a_SampleApplication_n_1registerReceiver__Landroid_content_BroadcastReceiver_2Landroid_content_IntentFilter_2) - is the library loaded, e.g. System.loadLibrary?
Steps to Reproduce
Create new Android application, add Application class inheritor and override RegisterReceiver(BroadcastReceiver? receiver, IntentFilter? filter) method.
Anyway, you can try the attached sample
Did you find any workaround?
Any workaround would be appreciated.
Relevant log output
java.lang.UnsatisfiedLinkError: No implementation found for android.content.Intent crc645671ac291747a43a.SampleApplication.n_registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter) (tried Java_crc645671ac291747a43a_SampleApplication_n_1registerReceiver and Java_crc645671ac291747a43a_SampleApplication_n_1registerReceiver__Landroid_content_BroadcastReceiver_2Landroid_content_IntentFilter_2) - is the library loaded, e.g. System.loadLibrary?
 	at crc645671ac291747a43a.SampleApplication.n_registerReceiver(Native Method)
 	at crc645671ac291747a43a.SampleApplication.registerReceiver(SampleApplication.java:34)
 	at mono.MonoPackageManager.LoadApplication(MonoPackageManager.java:39)
 	at mono.MonoRuntimeProvider.attachInfo(MonoRuntimeProvider.java:35)
 	at android.app.ActivityThread.installProvider(ActivityThread.java:8220)
 	at android.app.ActivityThread.installContentProviders(ActivityThread.java:7728)
 	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7482)
 	at android.app.ActivityThread.access$1600(ActivityThread.java:310)
 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2281)
 	at android.os.Handler.dispatchMessage(Handler.java:106)
 	at android.os.Looper.loopOnce(Looper.java:226)
 	at android.os.Looper.loop(Looper.java:313)
 	at android.app.ActivityThread.main(ActivityThread.java:8663)
 	at java.lang.reflect.Method.invoke(Native Method)
 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)

The cause of this crash is straightforward: context.registerReceiver():
https://github.com/dotnet/android/blob/118e8943dd614c9f19fbe64f81588ef8f63b4ef3/src/java-runtime/java/mono/android/MonoPackageManager.java#L39
needs to be called after ApplicationRegistration.registerApplications():
https://github.com/dotnet/android/blob/118e8943dd614c9f19fbe64f81588ef8f63b4ef3/src/java-runtime/java/mono/android/MonoPackageManager.java#L127
Which would fix this immediate problem.
The larger problem is that all virtual context. method invocations within MonoPackageManager.LoadApplication() are now suspect.  This includes context.getFilesDir(), context.getCacheDir(), and context.getClassLoader() (among others), as these are all bound as virtual members, and thus could also be overridden by the Application, a'la:
[Application]
partial class MyApp : Android.App.Application {
    public override Java.IO.File? FilesDir => "/data/local/tmp"; // sure, why not!
}

We can't call ApplicationRegistration.registerApplications() until after Runtime.initInternal() is called, and Runtime.initInternal() pulls in data from the context, which is the Application subclass.
(Behold the joy of circular dependencies?)
We could instead move those context. method invocations into libxamarin-app.so, which would allow us to perform non-virtual method invocations via JNIEnv::CallNonvirtualObjectMethod() against android.app.Application.  This should fix the crash, but also means that these properties would be ignored when overridden in C#.
I'm not sure what this would do to startup time.  JNI invocations are generally slower than invocations from Java.
Alternatively, we rework Runtime.initInternal() to be a "two-step" process, where the initial step doesn't require context method invocations, we call ApplicationRegistration.registerApplications(), and then we call Runtime.finishInit() using the context method invocations.
I'm not sure that this is possible, but it certainly should be explored.

@jonpryor Thank you for investigation! Hope I haven't open any hell portal with that issue.
My question for you would be: is there anything I can do to override this method without crashing? Because, from what I read, it looks impossible.

@aliyailina asked:

Is there anything I can do to override this method without crashing?

Yes.  Override…in Java.  Via the glory that is @(AndroidJavaSource), with %(AndroidJavaSource.Bind)=True, you should be able to subclass Application from Java, and then have your C# class inherit your Java class:
// java
package kludge;
public class MyIntermediateApp extends android.app.Application {
    @Override Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
        // …
    }
}

// C#
public sealed partial class SampleApplication : Kludge.MyIntermediateApp {
    // …
}

The problem with this idea is that presumably you want to call C# code from RegisterReceiver().  That complicates things, but you could have MyIntermediateApp.registerReceiver() "store" the calls in a List, and then have a method to query that list within SampleApplication.OnCreate().  (I think OnCreate() is called later, anyway…)

@jonpryor That might work for this sample, where SampleApplication inherits exactly Android's Application class, but in real app I have already inherited my application class from third-party provided base class. Anything for such case?

@aliyailina wrote:

That might work for this sample, where SampleApplication inherits exactly Android's Application class, but in real app I have already inherited my application class from third-party provided base class (to be precise, MvvmCross). Anything for such case?

As my college Statics teacher used to say, "it's the same but different."  You should still be able to use an intermediary, but instead of having the Java code subclass android.app.Application, it would subclass the Java name of the C# class you're using.  (Yes, Java code should be able to subclass C# types!)
The problem will be determining the Java name of the C# class.
For example, if we create a new MVVM-using app:
% dotnet new android -n android-mvx
% cd android-mvx
% git apply --ignore-whitespace <<EOF
diff --git a/android-mvx.csproj b/android-mvx.csproj
index a1999d9..73b8237 100644
--- a/android-mvx.csproj
+++ b/android-mvx.csproj
@@ -10,4 +10,21 @@
     <ApplicationVersion>1</ApplicationVersion>
     <ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
   </PropertyGroup>
+  <ItemGroup>
+    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions">
+      <Version>5.0.0</Version>
+    </PackageReference>
+    <PackageReference Include="MvvmCross">
+      <Version>8.0.2</Version>
+    </PackageReference>
+    <PackageReference Include="MvvmCross.DroidX.Material">
+      <Version>8.0.2</Version>
+    </PackageReference>
+    <PackageReference Include="Serilog.Extensions.Logging">
+      <Version>3.0.1</Version>
+    </PackageReference>
+    <PackageReference Include="Xamarin.AndroidX.ConstraintLayout">
+      <Version><IP_ADDRESS></Version>
+    </PackageReference>
+  </ItemGroup>
 </Project>
\ No newline at end of file
EOF

% dotnet build

The Xamarin MVVX MainApplication template inherits MvxAndroidApplication<Setup, App>:
#if DEBUG
    [Application(Debuggable = true)]
#else
    [Application(Debuggable = false)]
#endif
    public class MainApplication : MvxAndroidApplication<Setup, App>
    {
        public MainApplication(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
        {
        }
    }

Once dotnet build has finished, look for the generated Java Callable Wrappers:
% find obj -iname \*MvxAndroidApplication\*.java
./obj/Debug/net8.0-android/android/src/crc6466d8e86b1ec8bfa8/MvxAndroidApplication.java
./obj/Debug/net8.0-android/android/src/crc6466d8e86b1ec8bfa8/MvxAndroidApplication_2.java

The _2 comes from the "arty" of MvxAndroidApplication<Setup, App>, but generics get all "weird", so I'd suggest forgetting that MvxAndroidApplication<Setup, App> exists, and instead stick to MvxAndroidApplication.
Now that you've figured out the Java Callable Wrapper name, just use it from your Java code:
package kludge;
public class MyIntermediateApp extends crc6466d8e86b1ec8bfa8.MvxAndroidApplication {
    @Override Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
        // …
    }
}

Then change your C# code from:
public partial class MainApplication : MvxAndroidApplication<Setup, App> {
}

to
public partial class MainApplication : Kludge.MyIntermediateApp {
}

You lose generics, but retain the inheritance relationship.

@jonpryor Many thanks for your help!
I tried what you suggest, created .java file in my project, inherited my Java class from MvxAndroidApplication referencing the package from JCW, but it only says "package does not exist" referencing to package where MvxAndroidApplication is. Am I missing something?


PLNSRVCE-553: Add Gradle Manipulator to builder images

/retest

e2e's clean; and theme of the day, the PaC bug did not report final status on the 3 builder images, and their PR's are now deleted
going to retest to make sure they are OK, and track their progress live on the staging cluster
/retest


leds still on

I went through the steps to turn off the led light on the fan.  everything went great except the lights are still on. what went wrong?

Hi, do other command work at all for you ?

The help command works but I have not used another command
Get Outlook for Androidhttps://aka.ms/ghei36

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 1:13:55 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
Hi, do other commands work at all for you ?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604001921, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTBGUVI4NEZVUV7AQ7DRJJCWHANCNFSM4LTU3BHA.

Verify that you have properly connected usb cable to the controller
Check lsusb if you are on linux to verify if the controller is present. Should have something like this: Bus 003 Device 004: ID 2516:0051 Cooler Master Co., Ltd.
Try running cm-rgb-cli version and please paste the result

i see the Bus 003 Device 004: ID 2516:0051 Cooler Master Co., Ltd. is present
Usage: cm-rgb-cli [OPTIONS] COMMAND [ARGS]...
Options:
--help  Show this message and exit.
Commands:
add-udev-rule
restore
set
version
when I did this command:
cm-rgb-cli set logo --mode=off save
it ran in the terminal

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 6:20 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)

Verify that you have properly connected usb cable to the controller
Check lsusb if you are on linux to verify if the controller is present. Should have something like this: Bus 003 Device 004: ID 2516:0051 Cooler Master Co., Ltd.
Try running cm-rgb-cli version and please paste the result

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604005387, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTFAUYBMITKOXZC5PHTRJJDPFANCNFSM4LTU3BHA.

Try running cm-rgb-cli version
This will read firmware version from the controller.

V1.01.00

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 6:37 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
Try running cm-rgb-cli version
This will read firmware version from the controller.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604014273, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTESRXZKMXDGL3V63ZTRJJFNFANCNFSM4LTU3BHA.

Ok, same as mine and comms work.

im not sure what else to do

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 6:48 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
Ok, same as mine and comms work.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604020236, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTGRXYMD2OCAFE2XKRDRJJGYTANCNFSM4LTU3BHA.

I was thinking :)
Try cm-rgb-cli set logo --color=ff0000 this should set your logo to red.

If that does not work run cm-rgb-cli restore and try again.

cm-rbg-monitor is the only command that changes the lights

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 6:50 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
I was thinking :)
Try cm-rgb-cli set logo --color=ff0000 this should set your logo to red.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604021339, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTHCR3YPAXFVRFKXCZTRJJHAJANCNFSM4LTU3BHA.

That's highly unusual.
Please make sure you don't have any cm-rgb-monitor process running in the
background. It overwrites color frequently and could make the result of running cm-rgb-cli
not visible.

when I run cm-rgb-monitor the led blinks from red to orange on the ring of the fan

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 6:58 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
That's highly unusual.
Please make sure you don't have any cm-rgb-monitor process running in the
background. It overwrites color frequently and could make the result of running cm-rgb-cli
not visible.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604025351, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTC32GYPDZNQVHPK2PDRJJH4ZANCNFSM4LTU3BHA.

I looked in system monitor under the tab processes and didn't see any processes that referred to cm-rgb-monitor

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 6:58 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
That's highly unusual.
Please make sure you don't have any cm-rgb-monitor process running in the
background. It overwrites color frequently and could make the result of running cm-rgb-cli
not visible.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604025351, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTC32GYPDZNQVHPK2PDRJJH4ZANCNFSM4LTU3BHA.

That's strange, both the monitor and the cli use same code to control the led's.
cm-rgb-cli set logo --mode=breathe --color=#00ff00 --speed=3 --brightness=5 fan --mode=breathe --color=#0000ff --speed=4 --brightness=1 ring --mode=swirl --color=#ff0000 --speed=1 --brightness=1
This one sets every area of the cooler, let's see if anything happens at all.

I've just remembered , do you have second cable connected as well ?
The one to the rgb header ?
It's NOT suppose to be connected or the controller goes bananas on this cooler.

when I ran that command it went straight to red and began its process. when I restore it changes it again.  so there is diffidently   changes going on.

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 7:11 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
That's strange, both the monitor and the cli use same code to control the led's.
cm-rgb-cli set logo --mode=breathe --color=#00ff00 --speed=3 --brightness=5 fan --mode=breathe --color=#0000ff --speed=4 --brightness=1 ring --mode=swirl --color=#ff0000 --speed=1 --brightness=1
This one sets every area of the cooler, let's see if anything happens at all.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604032007, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTGWNFDUC23DDN5EO5TRJJJODANCNFSM4LTU3BHA.

I have every wire for the fan hooked up

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 7:14 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
I've just remembered , do you have second cable connected as well ?
The one to the rgb header ?
It's NOT suppose to be connected or the controller goes bananas on this cooler.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604033549, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTCULZ4YTWDR2GD44ILRJJJZ3ANCNFSM4LTU3BHA.

Ok, that may be it

I recommend only having the one responsible for the USB connected.

ok i'll shut down and disconnect the wire on the right, under the fan and I will let you know if that works

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 7:19 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
Ok, that may be it
[image]https://user-images.githubusercontent.com/1913102/77576640-d0e55000-6ed5-11ea-8fc7-3c65df707e07.png
I recommend only having the one responsible for the USB connected.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604035732, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTFWZNI5AO5QCTIOEJTRJJKL5ANCNFSM4LTU3BHA.

The USB port coming out of the fan is the one on the right with the three wires.  The one on the left has four wires and that is for the RGB for my setup
Get Outlook for Androidhttps://aka.ms/ghei36

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 2:19:26 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
Ok, that may be it
[image]https://user-images.githubusercontent.com/1913102/77576640-d0e55000-6ed5-11ea-8fc7-3c65df707e07.png
I recommend only having the one responsible for the USB connected.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604035732, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTFWZNI5AO5QCTIOEJTRJJKL5ANCNFSM4LTU3BHA.

How is it going ?

I disconnected the RGB cable and I left the USB cable and I have no RGB at all I tried to restore it via cm-rgb-restore and it still is off so I'm guessing your software runs through the RGB cable and not the USB
Get Outlook for Androidhttps://aka.ms/ghei36

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 2:49:12 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
How is it going ?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604049668, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTAWAKLINXBXWJ6LBZDRJJN3RANCNFSM4LTU3BHA.

I think I'm just going to unplug both USB and RGB it seems like those are both for just RGB and does not have any effect on the control of the fan if I'm correct because my fan control is through the BIOS on my motherboard
Get Outlook for Androidhttps://aka.ms/ghei36

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 2:49:12 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
How is it going ?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604049668, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTAWAKLINXBXWJ6LBZDRJJN3RANCNFSM4LTU3BHA.

It's most certainly through the USB. Most likely the command that you have sent earlier with  the save actually has been stored :)

How can I check it how can I turn it back on
Get Outlook for Androidhttps://aka.ms/ghei36

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 2:53:26 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
It's most certainly through the USB. Most likely the command that you have sent earlier with the save actually has been stored :)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604051802, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTBR25BPEHKUAEGU5S3RJJOLNANCNFSM4LTU3BHA.

Try cm-rgb-cli set logo --color=ff0000

Never mind I figured it out you are right thanks for your help
Get Outlook for Androidhttps://aka.ms/ghei36

From: jason wilson<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 2:55:50 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
How can I check it how can I turn it back on
Get Outlook for Androidhttps://aka.ms/ghei36

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 2:53:26 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
It's most certainly through the USB. Most likely the command that you have sent earlier with the save actually has been stored :)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604051802, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTBR25BPEHKUAEGU5S3RJJOLNANCNFSM4LTU3BHA.

No problem, I'm glad it has worked out for you :+1:

I turned it back on and then I turned it back off it works
Get Outlook for Androidhttps://aka.ms/ghei36

From: jason wilson<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 2:57:35 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
Never mind I figured it out you are right thanks for your help
Get Outlook for Androidhttps://aka.ms/ghei36

From: jason wilson<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 2:55:50 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
How can I check it how can I turn it back on
Get Outlook for Androidhttps://aka.ms/ghei36

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 2:53:26 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
It's most certainly through the USB. Most likely the command that you have sent earlier with the save actually has been stored :)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604051802, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTBR25BPEHKUAEGU5S3RJJOLNANCNFSM4LTU3BHA.

I have one other problem if you're willing I have a Nvidia GeForce RTX 2080 TI founders edition graphics card and I want to shut off the logo LED do you have any hints?
Get Outlook for Androidhttps://aka.ms/ghei36

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 2:58:24 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
No problem, I'm glad it has worked out for you 👍
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604054288, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTC6AA3P6OF4Q52UCXTRJJO6BANCNFSM4LTU3BHA.

Those are a bit of pain, same with AMD. I've set mine on windows and it remembers the settings.
It's quite risky to touch this (with random software) as the bus that controls the leds on graphics cards often have critical hardware components on the same bus. There is a chance of damaging the card.

I'll leave it alone then.  It's okay to have the RGB off of the fan we just worked on though right
Get Outlook for Androidhttps://aka.ms/ghei36

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 3:03:38 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
Those are a bit of pain, same with AMD. I've set mine on windows and it remembers the settings.
It's quite risky to touch this (with random software) as the bus that controls the leds on graphics cards often have critical hardware components on the same bus. There is a chance of damaging the card.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604056872, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTE5SFOEYYTHRRM24XTRJJPRVANCNFSM4LTU3BHA.

It's okay with what we did and keeping the RGB off of the family worked on right nothing's going to break?
Get Outlook for Androidhttps://aka.ms/ghei36

From: jason wilson<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 3:04:57 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
I'll leave it alone then.  It's okay to have the RGB off of the fan we just worked on though right
Get Outlook for Androidhttps://aka.ms/ghei36

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 3:03:38 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
Those are a bit of pain, same with AMD. I've set mine on windows and it remembers the settings.
It's quite risky to touch this (with random software) as the bus that controls the leds on graphics cards often have critical hardware components on the same bus. There is a chance of damaging the card.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604056872, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTE5SFOEYYTHRRM24XTRJJPRVANCNFSM4LTU3BHA.

It's independent of the actual fan so cooling will be ok.
I didn't have any complaints yet :)

cool thanks

From: gfduszynski<EMAIL_ADDRESS>Sent: Wednesday, March 25, 2020 8:26 PM
To: gfduszynski/cm-rgb<EMAIL_ADDRESS>Cc: matthew-2414<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gfduszynski/cm-rgb] leds still on (#15)
It's independent of the actual fan so cooling will be ok.
I didn't have any complaints yet :)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/gfduszynski/cm-rgb/issues/15#issuecomment-604068170, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOVIWTDJLSTSRKJDX3CPMYLRJJSG3ANCNFSM4LTU3BHA.


ci: use github actions

Codecov Report

:exclamation: No coverage uploaded for pull request base (develop@9b0ab2d). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             develop     #469   +/-   ##
==========================================
  Coverage           ?   95.26%
==========================================
  Files              ?       41
  Lines              ?     1500
  Branches           ?      298
==========================================
  Hits               ?     1429
  Misses             ?       71
  Partials           ?        0

Impacted Files
Coverage Δ

packages/ckb-sdk-rpc/src/exceptions/formatter.ts
100.00% <0.00%> (ø)

packages/ckb-sdk-rpc/src/paramsFormatter.ts
100.00% <0.00%> (ø)

packages/ckb-sdk-core/src/index.ts
67.87% <0.00%> (ø)

packages/ckb-sdk-utils/src/epochs.ts
100.00% <0.00%> (ø)

packages/ckb-sdk-utils/src/exceptions/string.ts
100.00% <0.00%> (ø)

packages/ckb-sdk-core/src/loadCells.ts
100.00% <0.00%> (ø)

packages/ckb-sdk-utils/src/validators.ts
100.00% <0.00%> (ø)

packages/ckb-sdk-rpc/src/exceptions/ErrorCode.ts
100.00% <0.00%> (ø)

packages/ckb-sdk-utils/src/exceptions/address.ts
100.00% <0.00%> (ø)

...ges/ckb-sdk-utils/src/serialization/transaction.ts
100.00% <0.00%> (ø)

... and 31 more


Update plugin.php

resolves issue #15 and #12
for roles use email use for login in the config file same way as described for Auth Manager Plus

We haven't been able to get Auth Manager Plus to see the google emails we specify in the config file w/ this patch.

Just updated once again. @nrasmus please review.

This fixes it thanks @Virus-x2 shame it has not been commited

Hello, can we get this tested, merged and released please? Any way I can help?


The link to click to set password is not triggering any action when clicked.

Hello guys!
Magento ver. 2.3.3
When new customer created from admin, confirmation email is sent. The link to click to set password is not triggering any action when clicked.

Regards,
Serhii

I fixed it in PR https://github.com/mageplaza/magento-2-arabic-language-pack/pull/12/files


Update copyright year

Changes

Update copyright year

Codecov Report

Merging #246 (2308520) into main (c3f36c0) will not change coverage.
The diff coverage is n/a.

@@             Coverage Diff             @@
##              main      #246     +/-   ##
===========================================
  Coverage   100.00%   100.00%
===========================================
  Files           56         1     -55
  Lines         1865        65   -1800
  Branches       119        29     -90
===========================================
- Hits          1865        65   -1800

Impacted Files
Coverage Δ

...codes/quine/labo/recheck/unicode/IntervalSet.scala

...scala/codes/quine/labo/recheck/common/Seeder.scala

...a/codes/quine/labo/recheck/exec/NodeExecutor.scala

...cala/codes/quine/labo/recheck/vm/Interpreter.scala

.../scala/codes/quine/labo/recheck/fuzz/FString.scala

...ne/labo/recheck/diagnostics/AttackComplexity.scala

...scala/codes/quine/labo/recheck/codec/package.scala

...scala/codes/quine/labo/recheck/cli/arguments.scala

...cala/codes/quine/labo/recheck/common/Checker.scala

...scala/codes/quine/labo/recheck/data/MultiSet.scala

... and 45 more

Continue to review full report at Codecov.

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

Codecov Report

Merging #246 (2308520) into main (c3f36c0) will not change coverage.
The diff coverage is n/a.

@@             Coverage Diff             @@
##              main      #246     +/-   ##
===========================================
  Coverage   100.00%   100.00%
===========================================
  Files           56         1     -55
  Lines         1865        65   -1800
  Branches       119        29     -90
===========================================
- Hits          1865        65   -1800

Impacted Files
Coverage Δ

...codes/quine/labo/recheck/unicode/IntervalSet.scala

...scala/codes/quine/labo/recheck/common/Seeder.scala

...a/codes/quine/labo/recheck/exec/NodeExecutor.scala

...cala/codes/quine/labo/recheck/vm/Interpreter.scala

.../scala/codes/quine/labo/recheck/fuzz/FString.scala

...ne/labo/recheck/diagnostics/AttackComplexity.scala

...scala/codes/quine/labo/recheck/codec/package.scala

...scala/codes/quine/labo/recheck/cli/arguments.scala

...cala/codes/quine/labo/recheck/common/Checker.scala

...scala/codes/quine/labo/recheck/data/MultiSet.scala

... and 45 more

Continue to review full report at Codecov.

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


Enable Drag Drop Upload

Enabled Drag&Drop Upload from Local to Server.

Thanks for PR, but it does not run. Code is incorrect and you are using ES2015.
Please no compare master branch. There is feature/drag_and_drop branch.

Sorry, I must have forgotten something. I worked on it local in my atom packages folder. Will try to fix the bugs. In my version everything works fine and I don't need filezilla anymore.

I deleted it, please send it again.


migration tracking.

This worked from a brand new installation, worked from an installation that was already on core@v2, and works if you run it infinite times sequentially. I didn't test how it does for an installation that is on core@v1, but it should work too.


HDDS-2578. Handle InterruptedException in RandomKeyGenerator

What changes were proposed in this pull request?
Fix sonar issue.
Re-interrupt current thread when InterruptedException was encountered.
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-2578
Please replace this section with the link to the Apache JIRA)
How was this patch tested?
mvn install to ensure it builds cleanly.

Thank You @dineshchitlangia for the contribution and @xiaoyuyao and @adoroszlai for the review.

Thanks everyone.


it doesnt work in android version 9

it wont be expand in new version of android pie 9

Does it have problems in the demo app? It's working for me on Android 9.

I did not check the demo app on my android 9 device , but my app was working correctly till new update of android 9 pie, since then expand doesn't work in my devices which updated to android 9

Please check the app. It could be unrelated to ExpandableLayout.
It's working for me in the demo as well as for every other app where I'm using it.

yes your right Demo works correctly but sine android updated ,this library don't works correctly on all phones which is updated to 9. it must be something else

Without more information (ideally reproducing the problem) I can't do anything else with this.
I'm closing this issue for now.

@cachapa i find the problem but i dont know how to solve it in android 9 it happens because expandable layout is sub view of scroll view. do you know how to solve this?

Unfortunately without seeing your code I can't be of much help.
In any case I would direct you to Stack Overflow for such questions as I don't have much free time currently and that site is much better suited for that type of help.


CurrentPage in PaginatedList doesn't reflect total number of items

Affected Version
4.x, 5.x
Description
CurrentPage returns 1 even when there are no results in the list as it only reflects the current request var. That means that LastPage returns false as CurrentPage is not equal to TotalPages which is correctly 0, leading into returning the NextLink when it shouldn't.
Steps to Reproduce
Try to get NextLink for paginatedList with 0 results, it should not return a link.
Acceptance criteria

Last Page return true when there are no more results.

PR's

https://github.com/silverstripe/silverstripe-framework/pull/10829
https://github.com/silverstripe/silverstripe-framework/pull/10830

PR merged. Tagged as 4.13.10 and 5.0.7


Cow: Watch onlinecompass.net

Cow requests the watch of the watch_keyword onlinecompass\.net. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

onlinecompass\.net has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by Jeff Schaller in Charcoal HQ


Downloads: Is there a way to handle "method": "Page.downloadProgress" ?

I searched online and investigated on my own.
What versions are you running?

$ go list -m github.com/chromedp/chromedp
github.com/chromedp/chromedp v0.7.1
$ google-chrome --version
90.0.4430.93 (Official Build) (x86_64)
$ go version
go version go1.16.3 darwin/amd64

What did you do? Include clear steps.
Most of the code is taken from the download example.
The target file I'm trying to get is this (RBNZ Foreign Exchange rates).  They have introduced the Cloudflare and the most obvious method of http.Get() stopped working, so we're discovering the possibilities to solve this.
"https://www.rbnz.govt.nz/-/media/ReserveBank/Files/Statistics/tables/b1/hb1-daily.xlsx?revision=5fa61401-a877-4607-b7ae-2e060c09935d"
The test works fine with this target URL, but when I'm trying to run it in the test with the local httptest.Server, it fails.
Failure is described below.
Function:
package rbnzdl

import (
	"bytes"
	"context"
	"fmt"
	"io"
	"log"
	"os"
	"strings"
	"time"

	"github.com/chromedp/cdproto/browser"
	"github.com/chromedp/cdproto/network"
	"github.com/chromedp/chromedp"
	"github.com/pkg/errors"
	"github.com/rusq/dlog"
)

func browserDL2(ctx context.Context, url string) (io.Reader, error) {
	// create chrome instance
	ctx, cancel := chromedp.NewContext(
		ctx,
		chromedp.WithLogf(dlog.Printf),
		chromedp.WithDebugf(dlog.Debugf),
	)
	defer cancel()

	// create a timeout as a safety net to prevent any infinite wait loops
	ctx, cancel = context.WithTimeout(ctx, 60*time.Second)
	defer cancel()

	// set up a channel so we can block later while we monitor the download progress
	downloadComplete := make(chan bool)

	// this will be used to capture the file name later
	var downloadGUID string

	// set up a listener to watch the download events and close the channel when complete
	// this could be expanded to handle multiple downloads through creating a guid map,
	// monitor download urls via EventDownloadWillBegin, etc
	chromedp.ListenTarget(ctx, func(v interface{}) {
		switch ev := v.(type) {
		case *browser.EventDownloadProgress:
			fmt.Printf("current download state: %s\n", ev.State.String())
			if ev.State == browser.DownloadProgressStateCompleted {
				downloadGUID = ev.GUID
				close(downloadComplete)
			}
		default:
			fmt.Printf("*** EVENT: %[1]T\n", v)
		}
	})

	// download the zip of the chromedp/examples repo from github. we use a link click method here
	// but this could also be done with a chromedp.Navigate task which points directly at the file we
	// want to download, as long as you run browser.SetDownloadBehavior first
	if err := chromedp.Run(ctx,
		browser.SetDownloadBehavior(browser.SetDownloadBehaviorBehaviorAllowAndName).WithDownloadPath(os.TempDir()),
		// click the "Download Zip" link when visible
		chromedp.Navigate(url),
	); err != nil && !strings.Contains(err.Error(), "net::ERR_ABORTED") {
		// Note: Ignoring the net::ERR_ABORTED page error is essential here since downloads
		// will cause this error to be emitted, although the download will still succeed.
		log.Fatal(err)
	}

	// This will block until the chromedp listener closes the channel
	<-downloadComplete

	// We can predict the exact file location and name here because of how we configured
	// SetDownloadBehavior and WithDownloadPath
	log.Printf("Download Complete: %v/%v", os.TempDir(), downloadGUID)
	return nil, nil
}

Test
package rbnzdl

import (
	"bytes"
	"context"
	"io/ioutil"
	"net/http"
	"net/http/httptest"
	"reflect"
	"strconv"
	"testing"
	"time"

	"github.com/rusq/dlog"
)

func init() {
	dlog.SetDebug(true)
}

func TestBrowserDL2(t *testing.T) {
	srv := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
		serveFile(rw, r, "test.txt", []byte("test data"))
	}))
	defer srv.Close()
	t.Logf("test server at: %s", srv.URL)

	tests := []struct {
		name    string
		want    []byte
		wantErr bool
	}{
		{"x", nil, false},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			r, err := browserDL2(context.Background(), srv.URL)
			if (err != nil) != tt.wantErr {
				t.Errorf("Get() error = %v, wantErr %v", err, tt.wantErr)
				return
			}

			got, _ := ioutil.ReadAll(r)
			if !reflect.DeepEqual(got, tt.want) {
				t.Errorf("Get() = %v, want %v", got, tt.want)
			}
		})
	}
}

func serveFile(w http.ResponseWriter, r *http.Request, filename string, data []byte) {
	w.Header().Set("Content-Disposition", "attachment; filename="+filename+"")
	w.Header().Set("Expires", "0")
	w.Header().Set("Content-Transfer-Encoding", "binary")
	w.Header().Set("Content-Length", strconv.Itoa(len(data)))
	w.Header().Set("Content-Control", "private, no-transform, no-store, must-revalidate")

	http.ServeContent(w, r, filename, time.Now(), bytes.NewReader(data))
}

What did you expect to see?
Expected: file is downloaded
What did you see instead?
Actual result: file is not downloaded, it seems in the logs, that the download goes in parallel to the initial request, while initial request is aborted with net::ERR_ABORTED.
In the log file it is obvious, that the download actually happens, but I can't find a way to handle the "Page.downloadProgress" events, which actually report that the file is being downloaded successfully.
[1:go/work/rbnzdl> DEBUG=1 go test -v > test.log 2>&1

Execution results attached:
test.log
Searched through the sources, but can't find any reference:
[1:go/thirdparty/chromedp> grep -R downloadProgress *

Would be grateful if you could point me in the right direction for an answer.
Please let me know if any additional information is required.

@rusq Sorry for the inconvenience.
<EMAIL_ADDRESS>depends on<EMAIL_ADDRESS>which is generated from the 92.0.4491.5_9.2.107 definitions (this can be considered as the version number of the Chrome browser). And in this version, page.downloadProgress is deprecated and is removed from cdproto.
You could chose one of the following approaches to over come this issue:

use<EMAIL_ADDRESS>which should work with Chrome 90.0.4430.93 (use page.SetDownloadBehavior(page.SetDownloadBehaviorBehaviorAllow) and listen to Page.downloadProgress instead).

use Chrome 92.0.4491.5 or later. (should pass eventsEnabled to ask the browser to emit download events, see the code below) (Note: I haven't tested this approach).
browser.SetDownloadBehavior(browser.SetDownloadBehaviorBehaviorAllowAndName).
	WithDownloadPath(os.TempDir()).
	WithEventsEnabled(true),

Thank you very much @ZekeLu , I followed the first proposal, as it seemed the easiest for my current environment, and it worked!
I'll post the sample code for the benefit of future generations.
The only shaky part in the example provided below, - is deducing the filename from the download URL in order to fetch the file from the temporary directory, as it may not be the actual filename. SetDownloadBehavior does not allow to have a convenience of setting the SetDownloadBehaviorBehaviorAllowAndName, as per the API doc.  I scanned through the API doc and couldn't find any API related to the page download that would deterministically return the resulting filename or the downloaded file contents.
If someone would be using the example, I suppose more reliable way to get the downloaded file contents would be to Walk the temporary directory which is created during the download, as it's most likely to have at most one file per call.
Don't mind my function naming - it's a playground code.
Code:
package rbnzdl

import (
	"bytes"
	"context"
	"fmt"
	"io"
	"io/ioutil"
	"log"
	"net/url"
	"os"
	"path"
	"path/filepath"
	"strings"
	"time"

	"github.com/chromedp/cdproto/browser"
	"github.com/chromedp/cdproto/network"
	"github.com/chromedp/cdproto/page"
	"github.com/chromedp/chromedp"
	"github.com/pkg/errors"
	"github.com/rusq/dlog"
)

const (
	ratesURL = "https://www.rbnz.govt.nz/-/media/ReserveBank/Files/Statistics/tables/b1/hb1-daily.xlsx?revision=5fa61401-a877-4607-b7ae-2e060c09935d"
)

func Get(ctx context.Context) (io.Reader, error) {
	return browserDL2(ctx, ratesURL)
}

func browserDL2(ctx context.Context, dlURL string) (io.Reader, error) {
	// create chrome instance
	ctx, cancel := chromedp.NewContext(
		ctx,
		chromedp.WithLogf(dlog.Printf),
		chromedp.WithDebugf(dlog.Debugf),
	)
	defer cancel()

	// create a timeout as a safety net to prevent any infinite wait loops
	ctx, cancel = context.WithTimeout(ctx, 60*time.Second)
	defer cancel()

	// set up a channel so we can block later while we monitor the download progress
	downloadComplete := make(chan bool)

	// set up a listener to watch the download events and close the channel when complete
	// this could be expanded to handle multiple downloads through creating a guid map,
	// monitor download urls via EventDownloadWillBegin, etc
	chromedp.ListenTarget(ctx, func(v interface{}) {
		switch ev := v.(type) {
		case *page.EventDownloadProgress:
			fmt.Printf("current download state: %s\n", ev.State.String())
			if ev.State == page.DownloadProgressStateCompleted {
				close(downloadComplete)
			}
		default:
			fmt.Printf("*** EVENT: %[1]T\n", v)
		}
	})

	tmpdir, err := ioutil.TempDir("", "")
	if err != nil {
		return nil, err
	}
	if err := chromedp.Run(ctx,
		// browser.SetDownloadBehavior(browser.SetDownloadBehaviorBehaviorAllowAndName).WithDownloadPath(tmpdir),
		page.SetDownloadBehavior(page.SetDownloadBehaviorBehaviorAllow).WithDownloadPath(tmpdir),
		chromedp.Navigate(dlURL),
	); err != nil && !strings.Contains(err.Error(), "net::ERR_ABORTED") {
		// Note: Ignoring the net::ERR_ABORTED page error is essential here since downloads
		// will cause this error to be emitted, although the download will still succeed.
		return nil, errors.WithStack(err)
	}

	// This will block until the chromedp listener closes the channel
	<-downloadComplete

	// We can predict the exact file location and name here because of how we configured
	// SetDownloadBehavior and WithDownloadPath
	filename, err := extractFilename(dlURL)
	if err != nil {
		return nil, err
	}
	downloadPath := filepath.Join(tmpdir, filename)

	b, err := ioutil.ReadFile(downloadPath)
	if err != nil {
		return nil, errors.WithStack(err)
	}
	log.Printf("Download Complete: %s", downloadPath)
	return bytes.NewReader(b), os.Remove(downloadPath)
}

// extractFilename attempts to extract the filename from the request URL.
func extractFilename(uri string) (string, error) {
	u, err := url.ParseRequestURI(uri)
	if err != nil {
		return "", err
	}
	p := path.Base(u.Path)
	if p == "" {
		return "", errors.New("unable to extract the filename")
	}
	return path.Base(u.Path), nil
}

Test
package rbnzdl

import (
	"bytes"
	"context"
	"io/ioutil"
	"net/http"
	"net/http/httptest"
	"reflect"
	"strconv"
	"testing"
	"time"

	"github.com/rusq/dlog"
)

func init() {
	dlog.SetDebug(true)
}

func TestBrowserDL2(t *testing.T) {
	srv := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
		serveFile(rw, r, "test.txt", []byte("test data"))
	}))
	defer srv.Close()
	t.Logf("test server at: %s", srv.URL)

	tests := []struct {
		name    string
		uri     string
		want    []byte
		wantErr bool
	}{
		{"x", srv.URL + "/test.txt", []byte("test data"), false},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			r, err := browserDL2(context.Background(), tt.uri)
			if (err != nil) != tt.wantErr {
				t.Errorf("Get() error = %v, wantErr %v", err, tt.wantErr)
				return
			}
			if r == nil {
				return
			}
			got, err := ioutil.ReadAll(r)
			if err != nil {
				t.Fatalf("reader error: %s", err)
			}
			if !reflect.DeepEqual(got, tt.want) {
				t.Errorf("Get() = %v, want %v", got, tt.want)
			}
		})
	}
}

func serveFile(w http.ResponseWriter, r *http.Request, filename string, data []byte) {
	w.Header().Set("Content-Disposition", "attachment; filename="+filename+"")
	w.Header().Set("Expires", "0")
	w.Header().Set("Content-Transfer-Encoding", "binary")
	w.Header().Set("Content-Length", strconv.Itoa(len(data)))
	w.Header().Set("Content-Control", "private, no-transform, no-store, must-revalidate")

	http.ServeContent(w, r, filename, time.Now(), bytes.NewReader(data))
}

For the file name part, since you chose approach 1, you can SetDownloadBehavior on the Browser domain while listen to events on the Page domain.
+browser.SetDownloadBehavior(browser.SetDownloadBehaviorBehaviorAllowAndName).WithDownloadPath(tmpdir),
-page.SetDownloadBehavior(page.SetDownloadBehaviorBehaviorAllow).WithDownloadPath(tmpdir),

I have tested approach 2 with chromedp/headless-shell:92.0.4491.6. It does not work!
There is not Browser.downloadProgress events emitted by the browser. I have checked the release history of Chromium, and the commit https://github.com/chromium/chromium/commit/f30fb0f0c38e411ce9eb6b75b71cf063c8ebaa16 is included in version 92.0.4491.6. It's very weird.
I will reopen this issue to track this issue (Browser. downloadWillBegin and Browser.downloadProgress events are not emitted).

Interesting! Thanks for looking into this.

Approach 2 works with Chromium 92.0.4498.0 now. See https://bugs.chromium.org/p/chromium/issues/detail?id=1204880.
And the download file example has been updated too. See https://github.com/chromedp/examples/commit/ba8f648bf92092916a5ed6d5455d2470d1ec22b4.