cleanup suggestions

Replied on reddit, but maybe better here:
Your git repo is already very clean, so some more cleanup suggestions (note I am not a C programmer):

Maybe add a README.md file to your repo root so that the project looks pretty on github. Your markdown files could maybe be more github markdown compatible (^title and snippet language, easier to read/review them on github).

It would look nice if you included continuous integration like travis, it is free and quick to set up.

The 'metrics' script does not need to be at project root, and can be named metrics.py.

The wren executable should go somewhere into the build folder.

A modern alternative to makefiles could be nice (cmake, autotools, scons) for portability.

Could be nice to doxygen your source-code.

Building wren I got make errors (Linux cc 4.8.1):
src/main.c:84:5: error: ignoring return value of ‘getline’, declared with attribute warn_unused_result
hacked that away, then could not link to math.h functions:
error: undefined reference to fmin()
had to move '-lm' to end of Makefile line.
You might be interested in the cpplint tool as well, a 2012 version is available via pypi. Maybe run it with: $ cpplint --filter=-whitespace,-readability/casting,-legal,-readability src/.c src/.h include/*.h

Also there is OCLint, which I discovered just now. Takes an hour to compile (compiling clang I think), and requires a command.json (https://github.com/rizsotto/Bear), but then yields this report like this:
$ build/oclint-0.9.dev.02251e4/bin/oclint -disable-rule=ShortVariableName -disable-rule=UselessParentheses ../wren/src/*.c

OCLint Report

Summary: TotalFiles=8 FilesWithViolations=6 P1=0 P2=80 P3=74

src/main.c:56:3: switch statements don't need default when fully covered P3
src/wren_compiler.c:2202:3: switch statements don't need default when fully covered P3
src/wren_compiler.c:1301:38: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1303:29: unused method parameter P3 The parameter 'compiler' is unused.
src/wren_compiler.c:1303:49: unused method parameter P3 The parameter 'name' is unused.
src/wren_compiler.c:1303:61: unused method parameter P3 The parameter 'length' is unused.
src/wren_compiler.c:1535:42: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1541:38: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1565:41: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1578:41: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1785:38: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1790:40: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1810:40: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1858:39: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1922:38: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1941:36: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1951:37: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1961:36: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1998:34: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:2025:21: unused method parameter P3 The parameter 'compiler' is unused.
src/wren_compiler.c:2025:41: unused method parameter P3 The parameter 'name' is unused.
src/wren_compiler.c:2025:53: unused method parameter P3 The parameter 'length' is unused.
src/wren_compiler.c:524:1: high cyclomatic complexity P2 Cyclomatic Complexity Number 20 exceeds limit of 10
src/wren_compiler.c:636:1: high cyclomatic complexity P2 Cyclomatic Complexity Number 15 exceeds limit of 10
src/wren_compiler.c:686:1: high cyclomatic complexity P2 Cyclomatic Complexity Number 39 exceeds limit of 10
src/wren_compiler.c:2198:1: high cyclomatic complexity P2 Cyclomatic Complexity Number 74 exceeds limit of 10
src/wren_compiler.c:524:1: high ncss method P2 Method of 38 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:636:1: high ncss method P2 Method of 48 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:686:1: high ncss method P2 Method of 118 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:1296:1: high ncss method P2 Method of 35 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:2198:1: high ncss method P2 Method of 85 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:2464:1: high ncss method P2 Method of 35 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:2574:1: high ncss method P2 Method of 47 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:2717:1: high ncss method P2 Method of 35 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:866:38: empty while statement P2
src/wren_compiler.c:332:1: long method P3 Method with 54 lines exceeds limit of 50
src/wren_compiler.c:686:1: long method P3 Method with 137 lines exceeds limit of 50
src/wren_compiler.c:942:1: long method P3 Method with 53 lines exceeds limit of 50
src/wren_compiler.c:1206:1: long method P3 Method with 66 lines exceeds limit of 50
src/wren_compiler.c:1296:1: long method P3 Method with 81 lines exceeds limit of 50
src/wren_compiler.c:1605:1: long method P3 Method with 52 lines exceeds limit of 50
src/wren_compiler.c:2198:1: long method P3 Method with 95 lines exceeds limit of 50
src/wren_compiler.c:2354:1: long method P3 Method with 91 lines exceeds limit of 50
src/wren_compiler.c:2464:1: long method P3 Method with 81 lines exceeds limit of 50
src/wren_compiler.c:2574:1: long method P3 Method with 109 lines exceeds limit of 50
src/wren_compiler.c:2717:1: long method P3 Method with 55 lines exceeds limit of 50
src/wren_compiler.c:1673:5: missing break in switch statement P2
src/wren_compiler.c:1033:3: empty do/while statement P2
src/wren_compiler.c:1523:3: empty do/while statement P2
src/wren_compiler.c:1685:9: empty do/while statement P2
src/wren_compiler.c:2291:7: empty do/while statement P2
src/wren_compiler.c:531:35: parameter reassignment P3
src/wren_compiler.c:532:35: parameter reassignment P3
src/wren_compiler.c:533:34: parameter reassignment P3
src/wren_compiler.c:534:35: parameter reassignment P3
src/wren_compiler.c:535:33: parameter reassignment P3
src/wren_compiler.c:536:32: parameter reassignment P3
src/wren_compiler.c:537:32: parameter reassignment P3
src/wren_compiler.c:538:32: parameter reassignment P3
src/wren_compiler.c:539:33: parameter reassignment P3
src/wren_compiler.c:540:34: parameter reassignment P3
src/wren_compiler.c:541:36: parameter reassignment P3
src/wren_compiler.c:542:36: parameter reassignment P3
src/wren_compiler.c:543:35: parameter reassignment P3
src/wren_compiler.c:544:34: parameter reassignment P3
src/wren_compiler.c:545:34: parameter reassignment P3
src/wren_compiler.c:546:33: parameter reassignment P3
src/wren_compiler.c:547:35: parameter reassignment P3
src/wren_compiler.c:1436:20: parameter reassignment P3
src/wren_compiler.c:1591:5: parameter reassignment P3
src/wren_compiler.c:1601:3: parameter reassignment P3
src/wren_compiler.c:2829:5: parameter reassignment P3
src/wren_compiler.c:524:1: high npath complexity P2 NPath Complexity Number 393216 exceeds limit of 200
src/wren_compiler.c:585:3: empty else block P2
src/wren_core.c:1005:1: high ncss method P2 Method of 488 non-commenting source statements exceeds limit of 30
src/wren_core.c:105:7: bitwise operator in conditional P2
src/wren_core.c:1005:1: long method P3 Method with 169 lines exceeds limit of 50
src/wren_core.c:409:32: avoid branching statement as last in loop P2
src/wren_debug.c:55:3: switch statements don't need default when fully covered P3
src/wren_debug.c:5:31: unused method parameter P3 The parameter 'vm' is unused.
src/wren_debug.c:29:1: high cyclomatic complexity P2 Cyclomatic Complexity Number 80 exceeds limit of 10
src/wren_debug.c:29:1: high ncss method P2 Method of 200 non-commenting source statements exceeds limit of 30
src/wren_debug.c:29:1: long method P3 Method with 228 lines exceeds limit of 50
src/wren_debug.c:29:1: high npath complexity P2 NPath Complexity Number 352 exceeds limit of 200
src/wren_debug.c:80:57: dead code P2
src/wren_value.c:662:1: high ncss method P2 Method of 32 non-commenting source statements exceeds limit of 30
src/wren_value.c:258:7: bitwise operator in conditional P2
src/wren_value.c:262:7: bitwise operator in conditional P2
src/wren_value.c:269:7: bitwise operator in conditional P2
src/wren_value.c:273:7: bitwise operator in conditional P2
src/wren_value.c:289:7: bitwise operator in conditional P2
src/wren_value.c:306:7: bitwise operator in conditional P2
src/wren_value.c:385:7: bitwise operator in conditional P2
src/wren_value.c:585:7: bitwise operator in conditional P2
src/wren_value.c:682:7: bitwise operator in conditional P2
src/wren_value.c:686:12: bitwise operator in conditional P2
src/wren_value.c:160:1: too many parameters P3 Method with 11 parameters exceeds limit of 10
src/wren_value.c:52:3: empty do/while statement P2
src/wren_value.c:327:3: empty do/while statement P2
src/wren_value.c:565:3: switch statements should have default P3
src/wren_value.c:597:3: switch statements should have default P3
src/wren_value.c:692:5: switch statements should have default P3
src/wren_vm.c:153:9: inverted logic P3
src/wren_vm.c:1107:7: inverted logic P3
src/wren_vm.c:567:5: deep nested block P3 Block depth of 6 exceeds limit of 5
src/wren_vm.c:666:5: deep nested block P3 Block depth of 6 exceeds limit of 5
src/wren_vm.c:22:46: unused method parameter P3 The parameter 'oldSize' is unused.
src/wren_vm.c:356:1: high cyclomatic complexity P2 Cyclomatic Complexity Number 81 exceeds limit of 10
src/wren_vm.c:1087:1: high cyclomatic complexity P2 Cyclomatic Complexity Number 11 exceeds limit of 10
src/wren_vm.c:356:1: high ncss method P2 Method of 62 non-commenting source statements exceeds limit of 30
src/wren_vm.c:1087:1: high ncss method P2 Method of 40 non-commenting source statements exceeds limit of 30
src/wren_vm.c:153:9: bitwise operator in conditional P2
src/wren_vm.c:818:11: bitwise operator in conditional P2
src/wren_vm.c:827:11: bitwise operator in conditional P2
src/wren_vm.c:845:11: bitwise operator in conditional P2
src/wren_vm.c:869:13: bitwise operator in conditional P2
src/wren_vm.c:980:11: bitwise operator in conditional P2
src/wren_vm.c:1065:7: bitwise operator in conditional P2
src/wren_vm.c:1070:7: bitwise operator in conditional P2
src/wren_vm.c:1056:3: unnecessary else statement P3
src/wren_vm.c:27:1: long method P3 Method with 53 lines exceeds limit of 50
src/wren_vm.c:101:1: long method P3 Method with 70 lines exceeds limit of 50
src/wren_vm.c:108:1: long method P3 Method with 70 lines exceeds limit of 50
src/wren_vm.c:356:1: long method P3 Method with 682 lines exceeds limit of 50
src/wren_vm.c:1087:1: long method P3 Method with 57 lines exceeds limit of 50
src/wren_vm.c:310:3: empty do/while statement P2
src/wren_vm.c:538:7: empty do/while statement P2
src/wren_vm.c:540:7: empty do/while statement P2
src/wren_vm.c:769:7: empty do/while statement P2
src/wren_vm.c:771:7: empty do/while statement P2
src/wren_vm.c:780:7: empty do/while statement P2
src/wren_vm.c:782:7: empty do/while statement P2
src/wren_vm.c:791:7: empty do/while statement P2
src/wren_vm.c:793:7: empty do/while statement P2
src/wren_vm.c:946:7: empty do/while statement P2
src/wren_vm.c:1031:7: empty do/while statement P2
src/wren_vm.c:1036:3: empty do/while statement P2
src/wren_vm.c:1091:3: empty do/while statement P2
src/wren_vm.c:1094:3: empty do/while statement P2
src/wren_vm.c:1095:3: empty do/while statement P2
src/wren_vm.c:1097:3: empty do/while statement P2
src/wren_vm.c:1098:3: empty do/while statement P2
src/wren_vm.c:1100:3: empty do/while statement P2
src/wren_vm.c:1164:3: empty do/while statement P2
src/wren_vm.c:1165:3: empty do/while statement P2
src/wren_vm.c:1166:3: empty do/while statement P2
src/wren_vm.c:1174:3: empty do/while statement P2
src/wren_vm.c:1175:3: empty do/while statement P2
src/wren_vm.c:1176:3: empty do/while statement P2
src/wren_vm.c:1184:3: empty do/while statement P2
src/wren_vm.c:1192:3: empty do/while statement P2
src/wren_vm.c:1200:3: empty do/while statement P2
src/wren_vm.c:278:5: parameter reassignment P3
src/wren_vm.c:1087:1: high npath complexity P2 NPath Complexity Number 1152 exceeds limit of 200

[OCLint (http://oclint.org) v0.9dev]

oclint: error: violations exceed threshold
P1=0[0] P2=80[10] P3=74[20]

Such reports can be tweaked to your code style.

Maybe add a README.md file to your repo root so that the project looks pretty on github.

Done!

Your markdown files could maybe be more github markdown compatible (^title and snippet language, easier to read/review them on github).

Yeah, that's a good idea. Doing this will take some work though, since those Markdown files are currently processed by Python Markdown and I'm not sure how GitHub-flavored it can be. I'll have to look into that.

It would look nice if you included continuous integration like travis, it is free and quick to set up.

Good idea! I took a peek and it looks like this will be easy to set up.

The 'metrics' script does not need to be at project root, and can be named metrics.py.

Done!

The wren executable should go somewhere into the build folder.

Maybe it's just me, but I kind of like that they get built to the top level directory. Makes it easier to run them.

A modern alternative to makefiles could be nice (cmake, autotools, scons) for portability.

I've gone back and forth a lot on this. The problem is that all of those are so complex. My current plan is to just hand-maintain a Makefile (since Wren is so simple, that isn't hard) and then probably maintain a separate VS solution for Windows if someone contributes one.

Could be nice to doxygen your source-code.

I intend to have the comments follow enough structure to run some kind of doc generator on it, but I'm not a fan of doxygen syntax (or at least I wasn't the last time I looked into it).

Building wren I got make errors (Linux cc 4.8.1):

Someone sent a pull request, so those should be fixed now.

Those OCLint warnings are interesting, but most of them aren't surprising. I probably will remove the unused parameter names at some point, but I find the code a bit easier to read with them in there. (The reason they're unused is because the functions are called through a function pointer and some of those functions use the parameter while others don't.)
Cheers!

All cool.
Putting all that is created by a build into the build folder is maybe a cmake best practice. At some point you might want to package more files and create distributables for different OSes and Linux distributions, putting all the stuff that needs to be tarballed (wren, manpage, debugger, etc.) into one subfolder.
Regarding cpplint / OCLint: A main advantage for you setting those up would be that people can make pull requests, then travis runs those checks (in addition to unit tests), and then the contributors can see in the travis report where they used bad style or have likely created bugs.
BTW, the output of cpplint is:
$ cpplint --filter=-whitespace,-readability/casting,-legal,-readability,-build/header_guard,-build/include src/*.c src/*.h include/*.h
src/main.c:41:  Using sizeof(type).  Use sizeof(varname) instead if possible  [runtime/sizeof] [1]
src/wren_compiler.c:1937:  Almost always, snprintf is better than strcpy  [runtime/printf] [4]
src/wren_core.c:667:  Never use sprintf.  Use snprintf instead.  [runtime/printf] [5]
src/wren_core.c:903:  Never use sprintf.  Use snprintf instead.  [runtime/printf] [5]
src/wren_utils.c:28:  Using sizeof(type).  Use sizeof(varname) instead if possible  [runtime/sizeof] [1]
src/wren_value.c:120:  Using sizeof(type).  Use sizeof(varname) instead if possible  [runtime/sizeof] [1]
src/wren_value.c:360:  Almost always, snprintf is better than strcpy  [runtime/printf] [4]
src/wren_value.c:361:  Almost always, snprintf is better than strcpy  [runtime/printf] [4]
src/wren_value.c:444:  Using sizeof(type).  Use sizeof(varname) instead if possible  [runtime/sizeof] [1]
src/wren_value.c:550:  Using sizeof(type).  Use sizeof(varname) instead if possible  [runtime/sizeof] [1]
src/wren_value.c:600:  Are you taking an address of a cast?  This is dangerous: could be a temp var.  Take the address before doing the cast, rather than after  [runtime/casting] [4]
src/wren_vm.c:579:  If you can, use sizeof(message) instead of 100 as the 2nd arg to snprintf.  [runtime/printf] [3]
src/wren_vm.c:632:  If you can, use sizeof(message) instead of 100 as the 2nd arg to snprintf.  [runtime/printf] [3]
src/wren_vm.c:683:  If you can, use sizeof(message) instead of 100 as the 2nd arg to snprintf.  [runtime/printf] [3]
src/wren_vm.c:735:  If you can, use sizeof(message) instead of 100 as the 2nd arg to snprintf.  [runtime/printf] [3]

I have no idea whether those would be useful for you.

A main advantage for you setting those up would be that people can make pull requests, then travis runs those checks

Oh, now that would be nice. I'm not gonna sweat it right now (since I only have a relatively small amount of free time to hack on Wren), but I definitely like the idea of more automated linting. Strangely enough, I've been spending the past few months writing an automated code formatter (for Dart), so this is close to home.


Candid support

Could you use https://github.com/Gekctek/ICP.NET for Candid support?

thank you, let me check

Any update on this?


Replace atomic unsafe pointers with generic atomic pointers

Replace atomic unsafe pointers with generic atomic pointers.
First-time contributor, so any feedback is more than welcome!
This resolves: #157.

 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.You have signed the CLA already but the status is still pending? Let us recheck it.

This looks great! Thanks for the contribution

Looks like we need to upgrade to go1.19, do you mind taking care of that @Mihai22125?

Sure thing

Error: sync/atomic is in the blacklist: Use go.uber.org/atomic instead of sync/atomic (depguard)

Looks like its necessary to update the .golangci.yml file

Hi @thorfour, Thanks for the point.
I updated the  .golangci.yml file. Can you check if it's alright now?

   Error: copylocks: NewPartList passes lock by value: sync/atomic.Pointer[github.com/polarsignals/frostdb.Node] contains sync/atomic.noCopy (govet)
  Error: copylocks: literal copies lock value from next: sync/atomic.Pointer[github.com/polarsignals/frostdb.Node] contains sync/atomic.noCopy (govet)
  Error: copylocks: call of NewPartList copies lock value: sync/atomic.Pointer[github.com/polarsignals/frostdb.Node] contains sync/atomic.noCopy (govet)
  Error: copylocks: literal copies lock value from index: sync/atomic.Pointer[github.com/google/btree.BTree] contains sync/atomic.noCopy (govet)

Now it's mad about copying locks

The errors should be fixed now, please let me know if there are any issues left.

Closing in favor of https://github.com/polarsignals/frostdb/pull/203 thanks for the contribution @Mihai22125

Hi! I'm glad I could help


Add the ruff linter to the pre-commit check

I've been finding the ruff linter really useful in some other projects, so thought I'd see if you guys were interested in adding it here.
My motivation was mainly to get the imports formatting standardised (which black doesn't do) for easier diffing/merging.
But it's got a bunch of other really useful checks, especially when working with pandas (though I've turned these off for now so as not to confuse the PR diff).
It's also found and fixed a bunch of style/safety things and I've flagged a couple of logic errors to be fixed also.
What do you guys think?

I generally like linters, but I don't have that much experience using them with python. I've used ESLint with javascript.

@SamRWest I guess this one can be merged already?

@SamRWest I guess this one can be merged already? Just so we don't have to resolve too many conflicts at a later stage...

Yep, I'll merge it shortly, then tackle #215


chore(main): release 1.12.0

:robot: I have created a release beep boop
1.12.0 (2024-11-22)
Features

implement target group resource (466a2a8)
inject release version into user agent (f9b4b8b)

Bug Fixes

httpResponse should not be passed to utils.Error (1e00399)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

v1.12.0
:sunflower:


Remove react-native-cli and copy over files ourselves

This was spurred on by some (apparently local?) problems I was having with the react-native CLI. However, I think it's worth a look even if react-native-cli works fine.
This PR removes our dependency on @react-native-community/cli aka react-native-cli and instead undertakes copying over the boilerplate files ourselves (when not using Expo).
Since the boilerplate is essentially already a runnable project, this is a pretty straightforward copy operation. We still do some cleanup by removing any stray Expo files that make it in and also run npx react-native-rename on it -- since your app is probably not named HelloWorld.
It seems that most of the time spinning up a new Ignite app is still when it's yarn installing. We probably need to spend time stripping our dependencies down a bit more.
This shouldn't make any breaking changes to the boilerplate. This would also supplant #1696 if we merge it.

Pushing up a fix for the test failure.


Gogle Docs not showing in Google Drive

rclone is only seeing the regular files I store in Google Drive. I'm not able to see or sync any of the native google docs, sheets, etc,

Are you missing files from the root directory only? In issue #49 somebody mentioned that specifying
drive-full-list=false
might be needed to get google docs in root directory.
That solved the problem for me - using v1.27.

Matthew,
Thanks for the input.
Sadly, I'm not not getting native google docs in any directory. All other
files are there.
--Jacob
On Wed, Feb 3, 2016 at 8:41 PM, matthew mcdonald<EMAIL_ADDRESS>wrote:

Are you missing files from the root directory only? In issue #49
https://github.com/ncw/rclone/issues/49 somebody mentioned that
specifying
drive-full-list=false
might be needed to get google docs in root directory.
That solved the problem for me - using v1.27.
—
Reply to this email directly or view it on GitHub
https://github.com/ncw/rclone/issues/339#issuecomment-179567832.

@jacobfarkas can you make sure you are using rclone 1.27 and using the drive-full-list=false (until I fix #336).
Also can you check you can download the docs from the web interface?  Try right clicking on them in the drive web interface and selecting download - it might be that you don't have permissions to export the documents.
What happens when you run rclone -v ls drive:path - does rclone mention the docs at all in the debug output?

Another thought - are these files shared with you? See #48

Nick,
It does work when I'm using the  --drive-full-list=false
Thanks,
--Jacob
On Thu, Feb 4, 2016 at 5:09 AM, Nick Craig-Wood<EMAIL_ADDRESS>wrote:

@jacobfarkas https://github.com/jacobfarkas can you make sure you are
using rclone 1.27 and using the drive-full-list=false (until I fix #336
https://github.com/ncw/rclone/issues/336).
Also can you check you can download the docs from the web interface? Try
right clicking on them in the drive web interface and selecting download -
it might be that you don't have permissions to export the documents.
What happens when you run rclone -v ls drive:path - does rclone mention
the docs at all in the debug output?
—
Reply to this email directly or view it on GitHub
https://github.com/ncw/rclone/issues/339#issuecomment-179747875.

Great.  I'll mark this as a duplicate of #336 then.

Nick,
I noticed it even when in "root" of Google Drive
--Jacob
On Fri, Feb 5, 2016 at 11:45 AM, Nick Craig-Wood<EMAIL_ADDRESS>wrote:

Great. I'll mark this as a duplicate of #336
https://github.com/ncw/rclone/issues/336 then.
—
Reply to this email directly or view it on GitHub
https://github.com/ncw/rclone/issues/339#issuecomment-180434499.

Yes that is expected.  If --drive-full-list=false then it has the same cause as #336

Fair point.
On Fri, Feb 5, 2016 at 11:50 AM, Nick Craig-Wood<EMAIL_ADDRESS>wrote:

Yes that is expected. If --drive-full-list=false then it has the same
cause as #336 https://github.com/ncw/rclone/issues/336
—
Reply to this email directly or view it on GitHub
https://github.com/ncw/rclone/issues/339#issuecomment-180436187.


Improve available filters + UX for app installation flow in 'Machine Config'

Suggested new feature or improvement
Users should be able to better filter apps based on tags and package type. Goal is to have an improved design + better searching functionality.
Scenario
A user could filter for specific packages to see in the app installation flow search (e.g. 'Gaming Development') to only better show packages that are relevant to their search.
Additional details
No response

https://github.com/microsoft/winget-cli/issues/148

WinGet doesn't have a notion of "categories".

https://github.com/microsoft/winget-cli/issues/1237

The challenge is figuring out the right list of them and how we manage that list over time. There are also concerns about how many categories a package can be included in.


Use the proper semantics of an AngularJS control

This is obviously a massive breaking change because:

It makes ngModel mandatory (like any other AngularJS form control).
It changes the required semantics back to the same as any other AngularJS control in the sense that it's managed by AngularJS ngRequired directive instead of being micromanaged inside this control. At the moment, the required semantics are counter-intuitive and actually conflict a bit with the new invisible reCAPTCHA workflow.

I've changed the unit tests to match a traditional AngularJS control flow.
Let me know what you think. If you don't agree with this, then we'll just have to keep our fork.
P.S.: In our build system, the HTML boolean attributes are optimised because we use HTML5, so if we put required="anything here" in our views, our minifier will change it to required because it's an HTML boolean attribute.

Coverage increased (+0.2%) to 94.737% when pulling b7a1a4f1aa1e8153fbdf8605d77f487b50dc9f5b on xcaliber-tech:ng-model into 0e205bcebaf202b79a7cfe20e90e943016530331 on VividCortex:master.

Coverage increased (+1.1%) to 95.614% when pulling 397007548d05859f791bd28b155cc231e55200e5 on xcaliber-tech:ng-model into 0e205bcebaf202b79a7cfe20e90e943016530331 on VividCortex:master.

Coverage increased (+0.2%) to 94.737% when pulling ef6e116f01930955faf5fae2e9d3070dd1b5e6d9 on xcaliber-tech:ng-model into 0e205bcebaf202b79a7cfe20e90e943016530331 on VividCortex:master.

Coverage increased (+1.1%) to 95.614% when pulling ef6e116f01930955faf5fae2e9d3070dd1b5e6d9 on xcaliber-tech:ng-model into 0e205bcebaf202b79a7cfe20e90e943016530331 on VividCortex:master.

It changes the required semantics back to the same as any other AngularJS control in the sense that it's managed by AngularJS ngRequired directive instead of being micromanaged inside this control. At the moment, the required semantics are counter-intuitive and actually conflict a bit with the new invisible reCAPTCHA workflow.

ngRequired only work on inputs, selects, and textareas. Removing it means you are removing that feature. While that feature doesn't make sense with the invisible reCaptcha, it does make sense for the checkbox reCaptcha. Without the required (opt-in or opt-out) and the $setValidity call, angular has no way of knowing that the reCaptcha is invalid or not and users cannot rely on the form validity anymore.
To clarify, you are not changing the required semantics back to the same as any other AngularJS control, you are removing the feature completely from this library and the users will no longer be able to make the reCaptcha field required.
This is not a bad thing. Again, with invisible reCaptcha, required is not needed.
Also, why make an optional field mandatory? What is the benefit? Right now if someone wants to provide ngModel, they can. If they don't want to for whatever reason, they don't have to. Unless there is a reason/feature which requires ngModel to always be there, their should be no reason to require it. Don't get me wrong, I always use ngModel as if it was required. I am the person who added the ability to use ngModel with current version of this library (after the rewrite to support reCaptcha v2). It was mostly needed to tie into angular's validation, even then it wasn't necessary to make it required since some people would not need the validation. Now that validation is being removed by this PR, ngModel becomes required... doesn't make as much sense.

Actually, I just realised I should have added tests for ngRequired, so yes you are right. I killed that by accident, doh. I'll add tests and bring form validity back. (as you said, we don't really need it for invisible, so it slipped through the cracks, sorry)
Regarding forcing ngModel, it's basically best practice. This control is intended to be used in a form and I can't think of any other use case. I understand your point, but I think we should force people to be better citizens, or maybe I'm wrong. :F
Not forcing anything btw. Just stating my reasoning, and getting feedback, so thank you for that. (:

Coverage increased (+1.1%) to 95.614% when pulling 0f79f6d31b913afc9f838491c347dac06fe84af7 on xcaliber-tech:ng-model into 0e205bcebaf202b79a7cfe20e90e943016530331 on VividCortex:master.

@TheSharpieOne I've added more unit tests and assertions for the native ngRequired validation.
From the ngRequired documentation: When developing custom controls, $isEmpty() can be overwritten to account for a $viewValue that is not string-based.
In our case, our $viewValue is string based, so we don't need to override $isEmpty, and the validation works fine. This obviously works because I'm forcing ngModel to be used in this PR, and I still strongly believe that's the right way to make a custom form control, so we can take advantage of AngularJS native functionality.

Looks good @alfaproject. Thank you! Could you please remove the changes to the files that are auto-generated? We usually only merge changes to source files.
Also, should we update the README file as part of this change ?

@mtrias I will do the README changes any other changes needed to the demo files, but do you mind if I keep the autogenerated files except for the minified one? The reason is that we are using my forked branch on production already, so if I remove those, I'll break our applications on the next CI build. ):

You can make a new branch from your ng-model branch and delete the generated files from the new branch and make a new PR with the new branch.

Coverage increased (+0.2%) to 94.737% when pulling 5a85ccb2a1e314b61e8c131f02443077535fdaa1 on xcaliber-tech:ng-model into 18f7372e0ccd9a51c9c39a55e7e7a1c4616787e0 on VividCortex:master.


BoopStrike Error

When trying to run a generic BoopStrike, it looks like there is a relative path that causes the following error if your working directory is not BoopSuite/core.
Traceback (most recent call last):
  File "/usr/local/bin/BoopStrike", line 17, in <module>
    version_file = open("../VERSION", 'r')
IOError: [Errno 2] No such file or directory: '../VERSION'

If you navigate to the BoopSuite/core directory and run the same command, the following Scapy issue (opened a separate issue for this) happens:
Traceback (most recent call last):
  File "/usr/local/bin/BoopStrike", line 98, in <module>
    main()
  File "/usr/local/bin/BoopStrike", line 92, in main
    sniffer_object.run()
  File "/usr/share/modules/sniffer.py", line 329, in run
    store=0
  File "/usr/lib/python2.7/dist-packages/scapy/sendrecv.py", line 620, in sniff
    r = prn(p)
  File "/usr/share/modules/sniffer.py", line 349, in sniff_packets
    self.handler_beacon(packet_object)
  File "/usr/share/modules/sniffer.py", line 420, in handler_beacon
    channel = packets.get_channel(packet)
  File "/usr/share/modules/packets.py", line 53, in get_channel
    dot11elt = packet.getlayer(Dot11Elt, ID=61)
TypeError: getlayer() got an unexpected keyword argument 'ID'

Oh see and I didn't notice the local file issue, awesome I'll have it fixed and pushed in a few minutes

Okay latest push should fix these issues, let me know if everything sails smoothly

Looks like that just nuked the VERSION file, which causes the same error.

Did you rerun the install.py file?

Did not, just did a pull for the other issue and I'm letting it run now.  Will update in a few.

This looks fixed to me.  Thanks again!


feature: option to disable labels on each new search

Did you check the docs?

[X] I have read all the flash.nvim docs

Is your feature request related to a problem? Please describe.
The enabled option of search only changes its initial state.
https://github.com/folke/flash.nvim/assets/91300213/9d8a4c67-e145-44e3-9e80-2808e08c7d9e
Describe the solution you'd like
I would like it to remain disabled each time I do a new search.
Describe alternatives you've considered
None.
Additional context
No response

I found the answer in discussions https://github.com/folke/flash.nvim/discussions/168, so I'll close this issue.
The following adds the functionality I was expecting:
local augroup = vim.api.nvim_create_augroup("plugins.flash", { clear = true })
vim.api.nvim_create_autocmd("CmdlineLeave", {
  group = augroup,
  pattern = { "/", "?" },
  callback = function()
    require("flash").toggle(false)
  end,
})


Revised files add GUI tab in the dialog icon

The revised files incorporated changes https://github.com/gregdavill/KiBuzzard/issues/13

@DCelectronics are we done ?


Handle when the chat feature is offline

Trello card
Trello-1867
Context
When the chat is unavailable we want to have 'Chat closed.' in the talk to us section. In other places where a chat button is shown we either want to hide the chat button completely (if not referenced by surrounding copy) or replace it with some offline text to inform the user that its unavailable at the moment but will be online between certain days/times.
Changes proposed in this pull request

Handle when the chat feature is offline
Use JS to handle when chat is offline

Guidance to review
The first attempt (in the first commit) was in Rails and had an issue due to the way we cache the static pages (using etags which change on deployment). To get around the issue where someone sees the incorrect state due to their cache we have to change the button status dynamically in JS (second commit).
Users with JS disabled will still see a button but it links to the talk to us section where we detail the opening hours (and will eventually have an email address for them to use).

Online
Offline

@gemmadallmandfe I've updated the closed text to remove the full stop and make it bold. I also noticed another place the chat link is used so I've included screenshots of how it looks online/offline if you can check you're happy with that too.

Footer update
Eligibility checker (online)
Eligibility checker (offline)

unrelated but that purple box shouldn't be overhanging - will fix that 😄


Kubernetes Config Server evaluates application config map in wrong order

Describe the bug
I have an application myapp configured with a profile "prod" and the following configmaps with one a yaml properties defined:

application
application-prod
myapp
myapp-prod

If define a property in application I want that it can be overridden in this order by:
application-prod, myapp, myapp-prod
so I expect that the configmaps contents are returned in this order:

myapp-prod
myapp
application-prod
application

But when the application gets the configmaps the config server returns them in this order:

application
myapp-prod
myapp
application-prod

so the property defined in application cannot be overridden.
Proposed solution
I can fix this behavior moving the line
https://github.com/spring-cloud/spring-cloud-kubernetes/blob/ebffaf464e8dd87e4c512dca0c5a6dd249be2e2b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configserver/src/main/java/org/springframework/cloud/kubernetes/configserver/KubernetesEnvironmentRepository.java#L67
after the "if" block.
	try {
		StandardEnvironment springEnv = new StandardEnvironment();
		springEnv.setActiveProfiles(profiles);
		if (!"application".equalsIgnoreCase(application)) {
			addApplicationConfiguration(environment, springEnv, application);
		}
		addApplicationConfiguration(environment, springEnv, "application");
		return environment;
	}`

`

That makes sense, would you like to submit a PR?  If so it should be submitted against the 2.1.x branch and we will merge it forward to main.

Sure, here the PR
https://github.com/spring-cloud/spring-cloud-kubernetes/pull/1291


Trouble with higher num: values

Expected Behaviour
There should appear the number of confetti I decide
Actual Behavior
it takes too long to render the number I have chosen. and either they do not render, or they are delayed, and then disappear suddenly during animation.
Steps to Reproduce the Issue

Create a confetti cannon with a higher num:
I would like up to 1000. but I was having issues even with 100-200 or more.

Thanks for reporting. What device are you using?

This project is an experiment to learn how to animate and span new views in SwiftUI. It is not the most perfomant way of animating large numbers of views, I agree. Especially old devices will have a hard time. Have a look at CAEmitterLayer for better performance.


Some components is missing

Environment: M1Pro, macos 12.4
I have tried building from source or download .dmg directly.
When I open Lapce and try to install plugin(rust LSP), nothing is there..

Can you access these two links fine?
https://lapce.github.io/plugins.json
https://raw.githubusercontent.com/lapce/lapce-rust/master/plugin.toml

Sure, I'm using Clash and I can open these two link.

I have the same problem.

what if i setup proxy in terminal and   launch Lapce in terminal. It also failed.

Looks like the issue is that Lapce doesn't use proxy to do the http requests.

Don't you use VPN(clash)?

I'll test it.

Looks @mrxiaozhuox had good results with the PR. I've merged it to master now.

 It works!

It works!

which branch you test ? main ?

why I can't work on main branch ...

Master


pip-build-hook.sh: support enableParallelBuilding

Description of changes
pip-build-hook.sh doesn't use enableParallelBuilding. This tries to support it, although things aren't very standardized so it won't work on all scripts.
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

Closing due to lack of response for years.


removed unnecessary function specific for PROV-LINKS standard

Changes Unknown when pulling ce937b39e0e4a712f8ec47fe2c20881cf7ef9ea0 on refactor-api into ** on develop**.

Changes Unknown when pulling d7939fe7f0a7cb48af9dcabe5d4fbe4caf4167df on refactor-api into ** on develop**.


When will login.microsoft.com be removed?

When will login.microsoft.com be removed?
This will affect how much of a priority we treat this

Document details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 89933f39-e8c4-32fd-736a-9f258cbcdaba
Version Independent ID: 9560563b-23d1-c0f7-a6c0-d7526f97d93e
Content: Set redirect URLs to b2clogin.com for Azure Active Directory B2C
Content Source: articles/active-directory-b2c/b2clogin.md
Service: active-directory
GitHub Login: @davidmu1
Microsoft Alias: davidmu

Are you asking when login.microsoftonline.com will no longer be supported in B2C apps?

Also curious to this question. When are we required to action the deprecation of login.microsoftonline.com in favor for b2clogin.com?

This is a really good question. Unfortunately this information is not available yet. If you keep track of the release notes page this information will become available as soon as it's out. https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/whats-new
The product team has not made an announcement yet but I will speak to them and update this thread as soon as the information becomes available.

Closing this out for now but will continue the discussion in the comments if there is an update.

Hi, this is actually quite critical to our app now. Google has now blocked sign-in from embedded webviews for non login.microsoft.com sources. This means that switching our MSAL login process to b2clogin breaks sign-in for google users. We can switch back to login... but if this is going to disappear soon we really need to know how long we have - as does the MSAL team to come up with a plan to resolve.
Thanks.


 Do you have a timeframe? For me the most important are the ones in bold above, as they can occur in third-party code.

Of the restrictions mentioned in the topic, the following are fixed in master (to be 2.2.0):

A constructor call (new Foo() or Reflect.construct() for Foo)
Function prototype .call() and .apply()


Test suite failure

Not sure what triggered this failure:
> /tmp/stackage-build9/kawhi-0.2.0$ dist/build/tests/tests
Data.NBA.Stats
  show (StatsResponseDecodeFailure message) == "StatsError (StatsResponseDecodeFailure message)":           OK (0.02s)
    206 tests completed
  show (SplitNameNotFound message) == "StatsError (SplitNameNotFound message)":                             OK (0.04s)
    206 tests completed
  show (SplitKeyNotFound message) == "StatsError (SplitKeyNotFound message)":                               OK (0.02s)
    206 tests completed
  show (SplitColumnNameNotFound message) == "StatsError (SplitColumnNameNotFound message)":                 OK (0.03s)
    206 tests completed
  show (SplitRowCardinalityInconsistent message) == "StatsError (SplitRowCardinalityInconsistent message)": OK (0.01s)
    206 tests completed
  show (SplitRowParseFailure message) == "StatsError (SplitRowParseFailure message)":                       OK (0.02s)
    206 tests completed
  Get stat -> Success:                                                                                OK
  Get stats -> Success:                                                                                OK
  Get stat -> SplitRowCardinalityInconsistent:                                                              OK
  Get stat -> SplitKeyNotFound (no rows):                                                                   OK
  Get stat -> SplitKeyNotFound (no key value):                                                              OK
  Get stat -> SplitKeyNotFound (JSON parse error for key value):                                            OK
  Get stat -> SplitNameNotFound:                                                                            OK
  Get stat -> SplitColumnNameNotFound:                                                                      OK
  Get stat -> SplitRowParseFailure (type mismatch):                                                         FAIL
    expected: StatsError (SplitRowParseFailure failed to parse field A: expected Integral, encountered String)
     but got: StatsError (SplitRowParseFailure expected Integer, encountered String)
  Get stat -> SplitRowParseFailure (missing field):                                                         OK
  Get stat -> StatsResponseDecodeFailure (for Stats):                                                       OK
  parseJSON invalid :: Parser Split -> Error:                                                               OK

1 out of 18 tests failed (0.11s)

Looks like an aeson change. I think I can add an upper bound on Hackage? I'll do that and make a new release that fixes the test for aeson-<IP_ADDRESS>.

Stackage Nightly has moved over to aeson 1.0, so if such an upper bound is added, we'll need to disable tests in Stackage.

Understood. As I said, I'll make a new release that uses aeson-1.0 and upload to Hackage soon. Thanks for your work on Stackage.

Ah, I misread that, thank you for restating it :)
On Thu, Sep 15, 2016 at 8:31 PM, Aaron Taylor<EMAIL_ADDRESS>wrote:

Understood. As I said, I'll make a new release that uses aeson-1.0 and
upload to Hackage soon. Thanks for your work on Stackage.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/hamsterdam/kawhi/issues/1#issuecomment-247395840, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AADBB5guOU9p-CaDmOEJeIrlmHgYUnOPks5qqYDkgaJpZM4J9wg7
.

From the perspective of Stackage and its maintainers, which of the following makes more sense? I'm new to this.

immediately add the version bound to Hackage and later upload a Nightly-compatible release
upload a Nightly-compatible release and then add the version bound to the old release

Published: https://hackage.haskell.org/package/kawhi-0.2.1


Use Into Instead of String in elastic_hyper

Instead of using String for the body in fns, use Into<hyper::Body>. This means adding a generic param to the function signatures and a where clause.
This may also need changes to elastic_codegen. These should be opened as separate issues.

Needed for: https://github.com/nblumhardt/emit/issues/11
This should make it possible to use a single byte buffer for building the bulk req

Depends on: #99


Yabs option

Hi,
It would be good if there were an option to enabled/disabled yabs option, so each time user want to run yabs from copy pasting, there is no need no manually modify the command.

#111


fix library for rails 6

Hi Lukas, I this I need a detailed review for this PR, I worked on the compatibility with 6. I'm worried about where to put this function: https://github.com/citusdata/activerecord-multi-tenant/pull/60/files#diff-a5f959a14e286a5a06806c2ce2dd71aaR334 and would love your take on this.

@louiseGrandjonc Shared a quick review - I'll also be in the same timezone as you the next week, so we can schedule a call as well to walk through this (some extra explanation would be helpful for me for a detailed review)

@lfittl, I think this PR is pretty much ready, if you want to do a last review.


Add duration to the workshop schedule

From feedback from @khxia and @GalenWong

If event is remote, then we can replace the location information / room with the duration
If event is not remote, then we could place the duration information as part of the description


HTTP Exception 422 Unprocessable Entity

I seem to be getting this when doing gradle gitPullRequest:
(--> POST (https://api.github.com/repos/user/repository/pulls)
Body : { "title" : "Automatic pull request", "body" : "this is a generated pull request","head" : "pullRequest-1493895439831","base" : "dev" }
Headers : (3)
Accept-Encoding : compress;q=0.5, gzip;q=1.0
Content-Type : application/json
Authorization : Basic XXXXXXXXXXXXXXXXXXXXX=, <-- 422 (https://api.github.com/repos/user/repository/pulls)
Response : Unprocessable Entity
Length : 184
Body : {"message":"Validation Failed","errors":[{"resource":"PullRequest","field":"head","code":"invalid"}],"documentation_url":"https://developer.github.com/v3/pulls/#create-a-pull-request"}
Headers : (20)
Status : [422 Unprocessable Entity]
null : [HTTP/1.1 422 Unprocessable Entity]
X-Accepted-OAuth-Scopes : []
Server : [GitHub.com]
Access-Control-Allow-Origin : [*]
X-Content-Type-Options : [nosniff]
X-RateLimit-Reset : [1493897885]
Date : [Thu, 04 May 2017 10:57:20 GMT]
X-Frame-Options : [deny]
Strict-Transport-Security : [max-age=31536000; includeSubdomains; preload]
Access-Control-Expose-Headers : [ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval]
X-RateLimit-Remaining : [4985]
X-GitHub-Media-Type : [github.v3; format=json]
Content-Security-Policy : [default-src 'none']
X-RateLimit-Limit : [5000]
X-XSS-Protection : [1; mode=block]
Content-Length : [184]
X-OAuth-Scopes : [admin:repo_hook, repo]
X-GitHub-Request-Id : [XXXXXXXXXXXXXXXXXXXX]
Content-Type : [application/json; charset=utf-8], [Failure: Exception : HTTP Exception 422 Unprocessable Entity])

I assume it is caused by the fact that there is no upstream branch by that name on origin namely https://github.com/dpreussler/gradle-pullrequest-builder/blob/master/src/main/groovy/de/jodamob/gradle/PullRequestBuilderPlugin.groovy#L41
changing it to "git push --set-upstream origin ${branchName}".execute().waitFor() might help?

solved in this fork: https://github.com/ATTX-project/gradle-pullrequest-builder


DE-1428 | Change component names

:tada: This PR is included in version 1.1.0-develop.39 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


docker is not working due to GLIBC issue: roapi-http: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by roapi-http)

Running docker run -t --rm -p 8080:8080 ghcr.io/roapi/roapi-http:latest --addr <IP_ADDRESS>:8080 \     --table "uk_cities=test_data/uk_cities_with_headers.csv" \     --table "test_data/spacex_launches.json"
is generating error:
roapi-http: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by roapi-http)

I will take a look into this today, in the mean time, you can try an older version as a workaround:
docker run -t --rm -p 8080:8080 ghcr.io/roapi/roapi-http:v0.3.4 --addr <IP_ADDRESS>:8080 --table "uk_cities=test_data/uk_cities_with_headers.csv" --table "test_data/spacex_launches.json"


Refactoring to extract blocks grouping logic out of syncer

[ ] I added CHANGELOG entry for this change.
[x] Change is not relevant to the end user.

Changes
In Cortex we're experimenting a different grouping logic, in order to be able to concurrently compact blocks belonging to non-overlapping time ranges. So far we've got a good result and we would like to move it upstream.
In order to continue to use the great Thanos BucketCompactor, we would need to inject a custom blocks grouping logic.
In this PR I'm proposing to extract the syncer grouping logic into a dedicated component (Grouper), moving the syncer Groups() logic to a DefaultGrouper implementation. Logic and metrics haven't changed (if they did, it's a bug).
/cc @pstibrany
Verification
Existing tests.

Thanks @pstibrany for your feedback! I will wait any maintainer feedback as well and then I will address all comments at once.

Looks you did not rebase so you run older jobs. Since it's passing, let's merge.


merge package template from arlac77/npm-package-template

package.json

chore(scripts): update prepare@rollup -c from template
chore(devDependencies): update<EMAIL_ADDRESS>from template

Coverage decreased (-0.2%) to 95.105% when pulling f2178214ff8bc93422f4f8244a224d659363484f on template-sync-1 into e66523396508d34bc091e6d82f6714e88e05a16d on master.

Codecov Report

Merging #186 into master will decrease coverage by 0.23%.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           master    #186      +/-   ##
=========================================
- Coverage   95.33%   95.1%   -0.24%
=========================================
  Files          32      32
  Lines         429     429
=========================================
- Hits          409     408       -1
- Misses         20      21       +1

Impacted Files
Coverage Δ

src/worker.js
96.96% <0%> (-3.04%)
:arrow_down:

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 e665233...f217821. Read the comment docs.


Not working

Cullleaves isn't doing anything and its still the same

Yo how can I fix it

like I have the mod and its also in my packs and I have it on so idk why it isn't working

Keep in mind that it doesn't change the visuals in Fast Graphics or when using my Better Leaves pack, but the performance is still drastically increased.


Humanize some Catalyst errors

Adds humanized versions of a few additional Catalyst errors:
Internal error type: 504 gateway timeouts during file import
Humanized error: file could not be imported from URL because it was not accessible
Internal error type: Unsupported video files for MediaConvert
Humanized error: invalid video file codec or container, check your input file against the input codec and container support matrix
Internal error type: Failure to probe or open files for MediaConvert
Humanized error: failed to probe or open file, check your input file against the input codec and container support matrix
These humanized errors should help with error filtering and categorization at the Studio API task level since these humanized errors can be stored as the error message for a failed task instead of the generic "internal error processing file"

+1 to humanized error messages


[GATEWAY] Makefile target added to send relays to grove gateway

Summary
Added a Makefile target to send a relay to the grove staging gateway.
Issue
To make it convenient to send test relays to the grove gateway.
Type of change
Select one or more:

[X] New feature, functionality or library
[ ] Bug fix
[ ] Code health or cleanup
[ ] Documentation
[ ] Other (specify)

@ezeike Make sure to re-request review when it's ready for another look.


[docs] include imports in the documentation

Regarding this part of the Documentation: https://tauri.app/v1/guides/features/command/#error-handling
I am trying to return a simple result and handle an Error.
Err("This failed!".into()) does not work and I have no idea what I would need to import to make it work because of the missing use/import statements.

There are no missing imports here. The example uses only the std prelude.
Can you share errors and/or relevant code that doesn't work for you?

So the issue here is that you're using tauri's Result/Error type instead of Rust's standard one, so if you replace -> tauri::Result<()> with -> Result<(), String> like in the examples you linked it should work again.

Ahh ok thank you!
It didn't work with just Result<()> like it usually does but it did work with tauri::Result<()> thats why I thought it would be the tauri Result. But yes with Result<(), String> it works.


quic client fuzzer hang #3

A new hang has been found with the quic-client fuzzer. This is different to #22412 and #22427.
Corpora file:
hang3.gz

That's why the fuzzer was a blocker for the release!


Support --help

Right now, cargo run or cargo run -- --help panics.

An actual CLI parser crate would be even better.


Minimalistic Options Please !

Hi there!
First of all let me say that this is one of the coolest extensions out there!
How I wish it would also scape the data from those sites, not just the headers and such, but until then...
OpenAI just released their history management, that with some other extensions, the side panel is fully packed
currently the Advanced Option take almost half of my sidebar,
If you can please, make the Advanced Options be collapsable, smaller and more minimalistic, or at least, be hidden when i toggle off "search the web". (atleast that last one) should be simple right?
Thanks a lot! and have a good one !

Hi, thanks for the feedback! This is a good suggestion. I will think about how the UI can be improved.

The UI has been made more minimalistic

Thanks! its much better :D


chore(deps): bump grpc dependency to latest

Signed-off-by: Daniel Sover<EMAIL_ADDRESS>
Description of the change:
Bumps the version of the gRPC library to latest
Motivation for the change:
Alongside bumping the gRPC version server-side in https://github.com/operator-framework/operator-registry/pull/810 this should improve the gRPC connection performance between OLM and registry pods on-cluster.
Reviewer Checklist

[ ] Implementation matches the proposed design, or proposal is updated to match implementation
[ ] Sufficient unit test coverage
[ ] Sufficient end-to-end test coverage
[ ] Docs updated or added to /doc
[ ] Commit messages sensible and descriptive

I haven't dived too deep into those e2e failures, but it looks like the majority of them are due to the test CatalogSource(s) being stuck in IDLE-ing states. Let's try and dive into those failures more, with the intention of determining whether these changes are applicable (e.g. influencing) those grpc-related failures.
/hold

I'm going to close this out as it has merge conflicts - we'll need to open an issue for upstream OLM that explains that bumping to the latest grpc version is problematic (and we'll need to investigate why).


Create gopg_migrations table when it does not exist with "up" cmd

Back around version 6.3.0 the gopg_migrations table would be created if it did not exist with the "up" cmd.
The latest versions (6.5.2 onward) all seem to require that init be run separately now. If I'm starting up off of a clean database, I'd like my app to create thegopg_migrations table if it does not exist and then run my migrations without running init separately.
If I missed how this can easily be done in the latest version, please let me know.

Current behavior is less convenient but simplifies the code and makes bugs regarding db/schema/table names more obvious.


Improve testing of save and export functionality

The testing of the GUI functionality is a bit hacky. There are sleep() calls, and we don't test the button clicking and the desired functionality separately.

Based on comments in #114 by @alessandrofelder:
I think a better long-term solution would be to:

mock the brainreg_segment.segment.run_save() function in these tests, and check that it's called with the expected parameters
write unit tests for run_save() and/or export_all()

tests for run_save could again mock export_all to avoid those tests being non-deterministic due to multiprocessing
tests for export_all could mock the thread_worker decorator to render it trivial and have export_all run in the same thread. (we trust thread_worker is tested sufficiently in the third party library it comes from and so don't need to test it)

This would ensure cleaner separation between

the tests that check that clicking GUI buttons call the expected functionality
the tests that call multiprocessing functionality
the tests that check the multiprocessing functionality itself

https://pytest-qt.readthedocs.io/en/latest/signals.html might also be useful in this context!


Skip fetching metrics by perfdash for misconfigured jobs

Commit https://github.com/kubernetes/test-infra/commit/50615e resulted
in breaking perfdash. This was due to lack of support for
"storage-suite" job type in perfdash.
To prevent such changes from breaking perfdash again, jobs with bad config will
be ignored.
Testing:

ran perfdash locally with bad config for storage jobs, verified that
other job data is fetched correctly

/assign @mborsz

/ok-to-test
/lgtm

/assign @mm4tt

/approve

Some FYI comments to already merged PR.

Thanks @krzysied, will address those in a follow-up PR


Using WASD+EQ with Ctrl Modifier results in program exit & save file.

It seems that using the WASDEQ keys, for moving around the 3d view, the speed can be modified via Ctrl|Shift|Alt.  This is nice, however it appears to clash with application level keyboard shortcuts: Ctrl-Q, and Ctrl-S.
To Reproduce
Steps to reproduce the behavior:

Press Ctrl-Q or Ctrl-S, expecting fine movement in the Y-Up, or Z-Back direction.
The application quits, or pops up a save dialog.

Expected behavior

Maybe remove the application level key bindings. Needing to quit the application, and save, come up alot less frequently than fine-level control of camera, for certain data sets.
Have Shift + WASDEQ be the fine-level movement, instead of control. Perhaps even removing Control entirely. Currently Shift moves very fast, for a dataset which is 70m+ in the X+Z directions, the dataset flies out of the view very easily.

Your goals
Move around the dataset to get a view from a particular point, needing quite fine level control over movement.
Desktop (please complete the following information):

OS: Linux Ubuntu 22.10

Thanks for filing this!
(For all Mac users out there: You don't run into this problem because saving is via Cmd for you!)
imho neither removing the shortcuts nor removing the slow-down is great:

application wide shortcuts at least for saving are so common, they are expected to work
speed plus slowdown are useful to quickly support variety of scenes. But we may need to tweak the factors  & expose camera speed etc. as a user setting on the space views

With that stance the only way out is a different button for slowdown. Proposing to stick with Ctrl on Mac and use Alt on Windows & Linux. What do you think?

Whichever seems most appropriate. Thinking about it now, it is probably best to stay away from CTRL as it is used most often with key combos that users will be familiar with.
Alt may already be bound to a speed 'mode'. I'll have a look at the the code see what the combinations are currently.
Probably for someone else to weight in here on what is correct/blessed.
Thanks


Persisting/serializing entities

I am currently looking into a good way to persist all my entities. The main use case is saving&loading the game.
Now I could iterate over every entity and check for every possible component and store everything in some way. Then on loading I would have to reverse this process.
But at the very best I don't want to do this too "game specific" and would prefer a more generic way of doing this that other people can benefit from. (That also works with a pooled engine and hopefully on all plattforms too!)
At the end I want something like this:
data persistEntities(Engine/PooledEngine)
loadEntities(data, Engine/PooledEngine)

or

data Engine.persistEntities()
Engine.loadEntities(data)

I think it would be good if one could mark every component that should be persisted with an annotation and/or interface and exclude fields with transient or an annotation. (e.g. a SpriteComponent with TextureRegions)
Maybe allow the components to handle the serialization by itself. (onSave, onLoad - similar to the android bundle concept))
I hope I get some input on this. And I intend to contribute this to Ashley or the community in some way.

Since entities are not represent whole application state, persisting them is only part of whole app state persistence. Withal systems' internal state it could be not possible to perform such universal (de)serialization. So I think it's kind of beyond ECS and rather specific case that's why should be handled outside.

At the end I want something like this:
param: Engine/PooledEngine

In my experience, typical usage is to save a subset of entities.

I think it would be good if one could mark every component that should be persisted with an annotation and/or interface and exclude fields with transient or an annotation.

One usually wants to serialize most component types - better to opt-out with an annotation (I'm fond of @Transient), than opt-in for the default use-case.
One of the biggest hurdles we faced was dealing with components with fields referencing other entities - these relationships must be persisted and properly restored at load.
GWT support is even trickier, but doable - usual GWT procedures apply.

Maybe allow the components to handle the serialization by itself. (onSave, onLoad - similar to the android bundle concept))

As an option, it's probably a good idea - as long as there's a default case which just works.

Since entities are not represent whole application state, persisting them is only part of whole app state persistence.

One can certainly model it in such a way that entities+components are all the state. We have 70+ systems, ~50 components, spread out over a number iof world/engines - without using any custom de/serialization code. We're also using the same save/load mechanism for "prefabs" (entity blob with some user-defined logic).

@junkdog I agree with pretty much what you say.
Occasionally, you want custom serialization/deserialization logic eg. component that holds a reference to a Texture. In this case, the serialized version may want to store the resource path and fetch it from the AssetManager on deserialize.
I'm unsure whether I would like to maintain such system inside Ashley as it's tricky to find a silver bullet. It would certainly help if we provided a suggested approach on the wiki.

@junkdog
You made very good points and I agree with you. Opt-out is what many serialization librarys do already and it makes sense to match their pattern.
@saltares
Assets were one case I had in mind regarding custom logic.
As you said it hasn't to be maintained inside Ashley. But it would certainly be nice if others can benefit from it too. Having something in the wiki and code in some other repository seems like reasonable/good idea.
Nested entities are the biggest hurdle I think. But depending on what libraries are used it could be handled very easily.
Gson for example has a GraphAdapterBuilder that handles large datasets very well.(Tested it with ~17k non ashley objects at work. (https://github.com/google/gson/blob/master/extras/src/main/java/com/google/gson/graph/GraphAdapterBuilder.java)
I also experimented with kryo a bit, but it produced stackoverflows because of too many objects i think(But I didn't put much thought and work in it since we would be using gson anyway).

Occasionally, you want custom serialization/deserialization logic eg.

As long as the underlying serialization framework exposes a means of supplying serializers, or maybe put an interface on the component, it shouldn't be a problem.

component that holds a reference to a Texture. / Assets were one case I had in mind regarding custom logic.

Hmm, what we do is that we have serializable "asset reference" components that go with each unserializable component type (FontReference->FontRenderable, SpineReference->SpineRenderable etc). For each pair, we have a "reactive"/resolver system creating the actual asset  - eg, Familiy.all(FontReference.class).exclude(FontRenderable.class), component is created when processing the entity, thereby also evicting the entity from system.
This soulotion ends up looking pretty clean - one resolver system per asset type - plus, it saves us from writing custom serialization logic.

Nested entities are the biggest hurdle I think. But depending on what libraries are used it could be handled very easily.

There's some custom serialization logic to cope with ashley's internal state - and the serialization code needs to internally track entity relationships when saving/loading, otherwise this won't work:
public class InheritScale implements Component {
    public Entity target;
}

imo, gson is a bit bloated compared to libgdx's json API. it's one dependency less, too.

Using Libgdx's Json API sounds like the natural thing to do since we're already depending on it.
Would this work?

EngineSerializer implementing Json.Serializer<Engine> and EntitySerializer implementing Json.Serializer<Entity>. We may have to do the same for the pooled variants.
@Transient annotation to skip systems and components.
The engine serializer would add elements "entities" and "systems" and would serialize all entities and all systems as long as they're not @Transient.
The entity serializer would serialize all components not marked as @Transient.
The client can customize component, system and listener serialization using json.setSerializer().
The client can deal with resource resolution in serialization.

I'd prefer not to add serialization logic to Engine nor Entity.
I think this supports @junkdog's and @meisterfuu's observations.
json = new Json();
json.setSerializer(Engine.class, new EngineSerializer());
json.setSerializer(Entity.class, new EntitySerializer());
// +user's serializers...

Engine engine = json.fromJson(Engine.class, serializedEngine);
String text = json.toJson(engine, Engine.class);

If we make Engine and Entity implement their own serializers we could make this a lot simpler though.
json = new Json();
// +user's serializers...

Engine engine = json.fromJson(Engine.class, serializedEngine);
String text = json.toJson(engine, Engine.class);

What do you prefer?

Using Libgdx's Json API sounds like the natural thing to do since we're already depending on it.
Valid point.

I like the first idea more. It gives more controll and one could do something like this :
`json = new Json();
json.setSerializer(Entity.class, new EntitySerializer(existingEngine));
Entity entity= json.fromJson(Entity.class, serializedEntity); // or an array`
Then the entity can added to an exisiting engine. And it is possible to persist&load only a subset of entities. And it makes it more clear what is going on. This is point is only important for a PooledEngine i think.

Actually I missed a couple points @junkdog made.

We may not want to save all entities, an EngineSerializer would just go and serialize all entities inside an engine...
Do we wan to serialize system's state? Ideally, systems should be stateless but people may rely on system's state and may need to persist that too.
We also need to provide a solution for PooledEngine and PooledEntity.

So my previous idea could fall a little short on this, but it could be on the right direction.

The client can customize component, system and listener serialization using json.setSerializer()

And, per default - implementing Json.Serializable would also be an alternative.

Do we wan to serialize system's state? Ideally, systems should be stateless but people may rely on system's state and may need to persist that too.

I've never done it myself, but I do think there are valid, perhaps situational, use-cases for wanting to serialize state not directly bound to entities:

Game metadata or otherwise session-bound state
(pending or previous) Events, notifications
Inventory/Item db

Another good-to-have feature is support for tagging serialized entities with a key. With tags, building prefab-like classes is straight forward: load from json, then retrieve the needed entities and update as required.

Thank you guys for the great feedback and the discussion. I'm going to have a go at it, write some unit tests and possibly push it to a branch in this repo and ask for some more feedback then.

Another good-to-have feature is support for tagging serialized entities with a key. With tags, building prefab-like classes is straight forward: load from json, then retrieve the needed entities and update as required.

@junkdog how do you see that working? how would you tag entity configurations, specifically?

We have a SerializationTag component (not to be confused with some global tag id). When loading, the object wrapping the entities also builds key:entity lookup map. I'll see if I can dig up some code which better shows what I mean.

Writing an EngineSerializer on top of the branch I created is pretty easy. However, things get a bit hairier in terms of design when we factor PooledEngine in the mix. This is because entity creation (inside the entity serializer) is coupled with the newly created pooled engine (which happens inside the engine serializer read method).
Any ideas to decouple these?

We might not need to decouple these. Probably just implement a createEntity() Method inside the Engine which just creates a new Entity() and returns it. PooledEngine just Overrides that method and obtains an Entity from the Pool instead.
That way no matter of the Engine type the creation of the Entity ist the same (Maybe do the same for Components)

That would mean the EntitySerializer needs a reference to an Engine, even if there's no pooling whatsoever, which feels awkward. Moreover, we still have the problem of component creation. Do we need another createComponent() method in the base Engine class?

Giving the EntitySerializer a reference to a PooledEngine is the best way I think. It also enables one to add entities to an exisiting engine.

@meisterfuu, @Metaphore, @junkdog and @laubed, could you please take a look at the serialization branch?
It's simpler now and it includes an EngineSerializer that works with both Engine and PooledEngine as well as an EntitySerializer.
The tests should make the serialization API self explanatory although I'm happy to answer any questions. I definitely accept suggestions to make it better.
Thanks a lot!

It's simpler now and it includes an EngineSerializer that works with both Engine and PooledEngine as well as an EntitySerializer.

I took a quick look. I like the design, very clean.
There should probably be a way to load multiple entities at once, without spawning a new engine. Full world engine or single entity feels a bit limiting.
What about persisting entity references in component fields - are those planned for the first release?

I agree with @junkdog .  But I think handling references in generel would be better placed in the json library. Enables multiple components sharing the same objects in a field. (e.g. two players having the same inventory)
I will do some tests with the current branch later and see how well it integrates with an existing prototype.

Thanks for the feedback guys.

There should probably be a way to load multiple entities at once, without spawning a new engine. Full world engine or single entity feels a bit limiting.

You can take a JSON array and call json.readObject() passing Entity.class, which will make the EntitySerializer process them. What kind of API do you suggest to make it easier?

What about persisting entity references in component fields

Maybe have custom component Json.Serializer<T> implementations for that? Users can implement their own entity id system, components should store entity ids rather than references. I think that's the standard practice pretty much everywhere.

I think many projects gravitate towards more complicated multi-entity compositions. (do we have a term for these, I usually call entities spanning multiple entities for "conceptual entity", but not the best term). In those situations, only loading a single entity at a time may require a lot of manual wiring, and extra overhead.

I think that's the standard practice pretty much everywhere.

We resolve entity references automatically. This helps greatly when dealing with conceptual entities spanning multiple entities. If the serializer ensures entity relationship integrity, one can build pretty sophisticated entity templates with ease.

Users can implement their own entity id system

Couldn't it be internal to the main serializer - if only allowing plain Entity, Bag<Entity> and Array<Entity>? The serializer would assign each entity an internal id (maybe re-use the index, only referenced in the json result), and users have something which works without extra configuration.

Will there be any further improvement on this branch ? That would be such an interesting feature to be found in the master !

I know! I'm finding it hard to find the time. I would really appreciate some help on this.

I'm a bit late into this discussion and haven't read everything here, but I would not serialize the entity system, I would have a model with the whole structure that I can serialize and when building the Engine passing the objects from this model to the entities/systems so that all updates change the objects in the model... works great :)

Please don't use libgdx's json or xml libraries. There faster and more maintained libraries out there doing a better job, and aside from that, the biggest problem with libgdx's approach is, that it stores the classpath of each class in the json/xml, which bloats the filesize and also makes it really difficult to refactor code.

@Lusito libgdx's json/xml libraries allow you to customize classTag. IMO these libraries are well maintained. And I didn't noticed performences issues serializing hundreads of entities unless you have some benchmarks about it ... which alternatives would you suggest ?

@mgsx-dev It's a very hidden option and it doesn't seem to be the recommended way looking at the tutorials. Even the libgdx 3D Particle Editor "Flame" does not make use of the classTag feature.
And looking at this file, I know enough about libgdx's way of conforming to standards:
https://github.com/libgdx/libgdx/blob/master/extensions/gdx-tools/assets/uiskin.json
It's red all over the place, because it's not valid json.
For json, gson is a good start and for xml xstream is a nice choice. They have proven time and again to be fast (especially with big files), stable and conforming to standards.

@Lusito To be honest I was thinking exactly the same as you few times ago :D but this weird json format appear to me to be very handy actually but it's just a question of taste and you can use both strong or simple format.
Anyway, IMO matter here is not which serializer to use (it could be abstracted by the API, letting client code make his choice), matter is more on subject like "how to serialize entities cross references", "how to serialize systems", "which entities to save", "which components to save" .... I'm working on it in one of my project and technical serialization is maybe the less important issues I had so far.


[SPARK-12871][SQL] Support to specify the option for compression codec.

https://issues.apache.org/jira/browse/SPARK-12871
This PR added an option to support to specify compression codec.
This adds the option codec as an alias compression as filed in SPARK-12668 .
Note that I did not add configurations for Hadoop 1.x as this CsvRelation is using Hadoop 2.x API and I guess it is going to drop Hadoop 1.x support.

Test build #49592 has started for PR 10805 at commit 5b57fc2.

Test build #49592 has finished for PR 10805 at commit 5b57fc2.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/49592/
Test PASSed.

Merged build finished. Test PASSed.

Test build #49643 has started for PR 10805 at commit e7ebddd.

Test build #49643 has finished for PR 10805 at commit e7ebddd.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/49643/
Test PASSed.

Yup we are dropping Hadoop 1.x support, so it is OK to have it only for Hadoop 2.x.

I will resolve conflicts and update this soon.

Supported shorten names for compression codecs are below (case insensitive):
bzip2 -> org.apache.hadoop.io.compress.BZip2Codec
gzip -> org.apache.hadoop.io.compress.GzipCodec
lz4 -> org.apache.hadoop.io.compress.Lz4Codec
snappy -> org.apache.hadoop.io.compress.SnappyCodec

Test build #49671 has started for PR 10805 at commit adb9eb2.

Although CSVCompressionCodecs might be shared with JSON datasource, I will make that share this at the separate PR for JSON.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/49674/
Test FAILed.

Test build #49676 has started for PR 10805 at commit 6400b76.

Test build #49679 has started for PR 10805 at commit 0245eea.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/49678/
Test FAILed.

Test build #49671 has finished for PR 10805 at commit adb9eb2.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/49671/
Test PASSed.

Merged build finished. Test PASSed.

Test build #49676 has finished for PR 10805 at commit 6400b76.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/49676/
Test PASSed.

Test build #49679 has finished for PR 10805 at commit 0245eea.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/49679/
Test PASSed.

Oh one thing: this doesn't support reading with compression yet, does it?

Oh yes it does.  Actually I am reading compressed files in the test I added here.
As you know it recognise the compression codec by file extension so if you meant manually setting compression codec for reading, it does not.

Yea I'm thinking we should also support specifying options, and it is "auto" by default which decides based on extensions.

I see. I will anyway try to figure this out though. I somehow this might be a bit too much as almost all files would have proper extensions and I think the (almost) only exception might be files initially uploaded by users to a file system.
Maybe I am missing something though. I don't think users would not give wrong extensions for the files but set compression codec for reading properly, in particular, when they use HDFS because AKAIK Hadoop supports reading compressed files by extension. I feel like they might have to give proper extensions.

Test build #49750 has started for PR 10805 at commit cd9f742.

LGTM

Test build #49750 has finished for PR 10805 at commit cd9f742.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/49750/
Test PASSed.

I've merged this in master. Thanks.


Live keynotes changes

https://tipit.avaza.com/project/view/188886#!tab=task-pane&task=2644530

@santipalenque I replaced the for Red Hat logos with new images in the CMS, but they are not found
Browser metadata
Path:      /live/keynotes
Browser:   Safari 15.0 on Mac OS 10.15.7
Viewport:  1275 x 1261 @2x
Language:  en-US
Cookies:   Disabled

Open in BrowserStack

Open Deploy Preview · Mark as Resolved

Let's remove the requirement for a presentation link, most will not have anything to link to
Browser metadata
Path:      /admin/#/collections/openinfra-live-page/entries/openinfra-live-keynotes-page
Browser:   Safari 15.0 on Mac OS 10.15.7
Viewport:  1275 x 1261 @2x
Language:  en-US
Cookies:   Disabled

Open in BrowserStack

Open Deploy Preview · Mark as Resolved

Running into the same issue with Speaker images
Browser metadata
Path:      /live/keynotes
Browser:   Safari 15.0 on Mac OS 10.15.7
Viewport:  1275 x 1261 @2x
Language:  en-US
Cookies:   Disabled

Open in BrowserStack

Open Deploy Preview · Mark as Resolved

It's hard to see how these will look when the images are showing, but it looks like we will need a margin in between rows
Browser metadata
Path:      /live/keynotes
Browser:   Safari 15.0 on Mac OS 10.15.7
Viewport:  1275 x 1261 @2x
Language:  en-US
Cookies:   Disabled

Open in BrowserStack

Open Deploy Preview · Mark as Resolved

@santipalenque I'm still getting the error that a presentation link is required, but everything else looks good

hey @iamweswilson  that should be fixed with my last commit

@santipalenque Can we hide the "Featured Speakers" section when there are no speakers in the list?
Browser metadata
Path:      /admin/#/collections/openinfra-live-page/entries/openinfra-live-keynotes-page
Browser:   Safari 15.0 on Mac OS 10.15.7
Viewport:  1272 x 1264 @2x
Language:  en-US
Cookies:   Disabled

Open in BrowserStack

Open Deploy Preview · Mark as Resolved

done @iamweswilson

thanks @santipalenque, I tried to remove all speakers in the CMS and still saw the speakers section in place, so published those changes to see if it would work as expected when deployed. Now seeing all checks have failed. https://github.com/OpenStackweb/osf-website/pull/102/commits/45ea8dc6d067abeb0bf116195109453d6bfd2cdb

@iamweswilson @santipalenque issue should be solved
regards

@santipalenque @smarcet I'm still seeing the speakers section in the preview when there are no speakers.
Browser metadata
Path:      /admin/#/collections/openinfra-live-page/entries/openinfra-live-keynotes-page
Browser:   Safari 15.0 on Mac OS 10.15.7
Viewport:  1275 x 1264 @2x
Language:  en-US
Cookies:   Disabled

Open in BrowserStack

Open Deploy Preview · Mark as Resolved

Merging this PR now since the speaker section is removed when deployed. Thanks!


Placeholder information found its way to the public documentation :)

[Enter feedback here]
Looks like below section should not be publicly visible :):
The hashing function can be one of the following:

NdisHashFunctionToeplitz
**NdisHashFunctionReserved1
NdisHashFunctionReserved2
NdisHashFunctionReserved3**

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: e9e232cb-5644-66ee-2f99-68891d198055
Version Independent ID: 17f242e2-1aa3-c06e-986f-6407930616b0
Content: RSS Hashing Functions - Windows drivers
Content Source: windows-driver-docs-pr/network/rss-hashing-functions.md
Product: windows-hardware
Technology: network
GitHub Login: @aviviano
Microsoft Alias: amvivian

Hi @scaramushe, Thanks for opening this issue. The reserved hash functions are actually in the public header (hashtypes.h), so the author of this topic decided to list them all and include a warning note below that:
Currently, NdisHashFunctionToeplitz is the only hashing function available to miniport drivers. The other hashing functions are reserved for NDIS.
Since there is a note of clarification, we won't update the topic at this time. Please open a new issue if you have further comments or questions.
Thanks again.


Add Robot Implementation of "End Game"

Similar to the autonomous and periodic. Would need to track driver station time? which is only guaranteed to be close - or maybe have something pressed by one of controllers. Need to add a callback or something to notify code that wants to know. Would allow changing the default commands to support a different mode of play.

Partial implementation now with determiner and setting boolean endGameState.


Weird error that I only get when running in production mode

I’ve got my uploads working fine locally and in my tests, but when I try it on production it blows up when I try to upload a file (the file is not required and it doesnt blow up if I don’t upload a file).
I get the following error:
NoMethodError (undefined method `object' for nil:NilClass):
  app/interactors/update_auction.rb:11:in `call'
  app/controllers/admin/auctions_controller.rb:26:in `update'

and the code of update_auction.rb looks like this. Any ideas what could be the problem?
class UpdateAuction
  include Interactor

  attr_accessor :auction
  attr_accessor :params

  def call
    self.params = context.params
    self.auction = context.auction = Auction.find(context.params[:id])
    auction.assign_attributes(auction_params)
    context.fail! && return unless auction.valid?
    auction.geocode if auction.geocodable?
    save_auction
  end

  private

  def auction_params
    params.require(:auction).permit(
      :title, :slug, :body, :date, :address, :address_for_geocoding,
      :short_description, :start_time, :pdf, :image, :catalog, :published,
      :remove_image, :remove_pdf, :remove_catalog
    )
  end

  def save_auction
    if auction.save
      BroadcastAuctionWorker.perform_async(auction.id) if auction.broadcastable?
    else
      context.fail!
    end
  end
end

Found the problem, nevermind.


Deploy example site to Netlify

Overview
Creates a Netlify config file to build and deploy the example/ subdirectory to https://develop--react-showtime.netlify.app.
Resolves #1
Notes
This repository was made public to allow Netlify to install react-showtime from this repository without needing to set up basic auth with access tokens embedded in package.json.
Testing Instructions

Verify that the Netlify build passes.
Verify that the deploy preview is available with no content security policy errors in the console.
Run yarn install in the repository root. Run yarn link to use the local version of the package when installing on the example site.
cd into the example subdirectory.
Run yarn link react-showtime to link the local package in the parent directory. Run yarn install.
Run yarn start. Confirm that the site runs at http://localhost:3000/ without errors.

There will be a brief error message in the terminal about not being able to load eslint-loader. This is an informational message and recognized issue with CRA v4, and doesn't actually impact Yarn's ability to run eslint.

@hectcastro Did some major rework and I'm much happier with the result. Thanks so much for pointing out the create-react-hook library, that was a huge missing piece for me. Round two!


[build tools] Added support for cumulative attributes in configs directly

Example in your mbed_lib.json:
Attributes now get the filtering provided by target_overrides:
{
    "name": "cmsis-nodejs-SQL-x86",
    "target_overrides": {
        "*": {
            "device_has": ["SILLY_STRING", "FIRE"]
        },
        "SHOE": {
            "features_add": ["SMELLS_FUNNY"],
            "features_remove": ["SMELLS_NICE"],
        }
    }
}

This shares the previous logic in custom_targets but avoids the need to instantiate a target. We may want to look into removing duplicate logic between the config and target systems at a later date.
cc @screamerbg, @bogdanm, @bridadan

Updated per comments from @screamerbg

LGTM too +1. Thanks.

This is broken in more than one way:

the config system is name spaced. Any target override is supposed to be prefixed by target.
libraries are not supposed to override target config, since the dependency relationship between libraries is not well defined and thus overriding rules are not clear.
device_has is by definition a target attribute. What's the benefit in making it overridable by a library?
features was also designed to be a target attribute originally, since it describes the list of features provided by the target. Overriding it in an unstructured way like this is very likely to lead to more confusion than benefits.

Because of all these reasons, I vote to revert this commit and re-implement it properly if we really need to.
@screamerbg @geky @sg-


InvertedColorScheme cannot be used with SSR

@freenow/wave version: v2 onwards

What was expected to happen?
Since InvertedColorScheme reads from window it fails when statically or server rendering.

I initially thought this would be simple, but after taking a better look it seems quite complex, I'll write a bit of context here so it's easier to pick up in the future...
The current InvertedColorScheme
Essentially it's a wrapper component that sets the color scheme of it's children to the inverse of the preferred color scheme of the user (e.g. if the user prefers light-scheme it will set it's children to dark-scheme)
How does it work?
It basically does 3 things:

Get and store the current preferred color scheme of the user, it does this by using window.matchMedia to check for matches with the prefers-color-scheme media query
Listen to changes on the prefers-color-scheme media query and set it's internal state based on that
Return a wrapper Box which has the class of the inverse color scheme set (effectively applying the inverse color scheme to it's children)

The problem
When rendering on the server side we don't have the window object and it's APIs, so we can't check media queries. We need a way to know which color scheme the user prefers, this article by Josh Comeau offers some insights into how this may be accomplished for a specific project and some more context around the problem.


Add output encoding option to BashOperator

Bash command outputs multi byte characters under some locale setting (e.g. date command under ja_JP.UTF-8 locale).
This PR will fix #770 .
Also deleting import sys because that is not used.

:+1:


File-Explorer Add-on causes File-Explorer crashes when previewing placeholders svg image from OneDrive

ℹ Computer information

PowerToys version: v0.25.0
PowerToy Utility: File Explorer Add ons
Running PowerToys as Admin: Yes
Windows build number: 19402

📝 Provide detailed reproduction steps (if any)

Upload a svg image to OneDrive using another devices
In File Explorer, turn on the Preview Pane
Make sure the status of this image is "available when online"
Click this image

✔ Expected result
the image could be seen in preview pane (trigger OneDrive download this image).
Give user a message like "cannot preview placeholders from OneDrive" would also fine.
❌ Actual result
The File Explorer locks-up and then crushes and restart.

Issue #3815 also shows that placeholders can be tricky. But this is even worse.

@Downstream1998
is this happening with any SVG image?

@Downstream1998
is this happening with any SVG image?

I just tried another svg image in OneDrive, and it seems fine, OneDrive will download this image automatically and image can be viewed in preview pane.
But I found that File Explorer do locks up during downloading images, and I cannot do any operation in File Explorer.
So I thought maybe the issue occurs when networking isn't well? I have no idea. 🤔

I'd put this as a P1.  Why: we've had this in the wild for a long time and this type of bug would have been there for a bit.


set up test2 and test3

Test2 production
Test3 development (sorry this may be the wrong way round - issue failed to load yesterday

To mirror the set-up on FreeREG. @lemon-ukgen I wonder if we might follow a similiar set-up for FreeBMD when we update the test/dev facilities? Although of course for the latter we need sandbox environments and not sure this covers it.

https://test2.freecen.org.uk - exists, running in production
https://test3.freecen.org.uk - I'll set this up, and configure Passenger to run it in development

This is the other way around from FreeREG2. We can switch them if that's a concern.

Now done. I just cloned ~apache/hosts/freecen/production (test2) into ~apache/hosts/freecen/development (test3) so it will have all the same database setup etc. The developers may want to change that.
Both sites are currently errorring 'We're sorry, but something went wrong...' as I found them.