[firebase_auth 0.14.0+5] Fatal Exception: NSInvalidArgumentException

Describe the bug
I've got a fatal exception on my production app.
I'm using anonymous auth in my flutter app (iOS only)
final FirebaseAuth _auth = FirebaseAuth.instance;
final AuthResult result = await _auth.signInAnonymously();

One of my users have got the fatal excepption on  iPhone 7, iOS 13.0.0 (17A5492t)
Full trace:
Fatal Exception: NSInvalidArgumentException
-[__NSCFURLSessionConfiguration_Mutable setTLSMinimumSupportedProtocolVersion:]: unrecognized selector sent to instance 0x121e4d3f0

Fatal Exception: NSInvalidArgumentException
0  CoreFoundation                 0x1a3ffe168 __exceptionPreprocess
1  libobjc.A.dylib                0x1a450951c objc_exception_throw
2  CoreFoundation                 0x1a3f033e8 -[NSOrderedSet initWithSet:copyItems:]
3  CoreFoundation                 0x1a400236c ___forwarding___
4  CoreFoundation                 0x1a4003dac _CF_forwarding_prep_0
5  GTMSessionFetcher              0x101060abc (Отсутствует)
6  Runner                         0x1003e862c -[FIRAuthBackendRPCIssuerImplementation asyncPostToURLWithRequestConfiguration:URL:body:contentType:completionHandler:] + 582 (FIRAuthBackend.m:582)
7  Runner                         0x1003e9dd4 -[FIRAuthBackendRPCImplementation postWithRequest:response:callback:] + 863 (FIRAuthBackend.m:863)
8  Runner                         0x1003e9380 -[FIRAuthBackendRPCImplementation signUpNewUser:callback:] + 720 (FIRAuthBackend.m:720)
9  Runner                         0x1003e7e90 +[FIRAuthBackend signUpNewUser:callback:] + 491 (FIRAuthBackend.m:491)
10 Runner                         0x1003e3bf8 -[FIRAuth internalSignInAnonymouslyWithCompletion:] + 1510 (FIRAuth.m:1510)
11 Runner                         0x1003e01e4 __43-[FIRAuth signInAnonymouslyWithCompletion:]_block_invoke + 941 (FIRAuth.m:941)
12 libdispatch.dylib              0x1a48236d0 _dispatch_call_block_and_release
13 libdispatch.dylib              0x1a4824244 _dispatch_client_callout
14 libdispatch.dylib              0x1a47d0624 _dispatch_lane_serial_drain$VARIANT$mp
15 libdispatch.dylib              0x1a47d1018 _dispatch_lane_invoke$VARIANT$mp
16 libdispatch.dylib              0x1a47da4a0 _dispatch_workloop_worker_thread
17 libsystem_pthread.dylib        0x1a4848f64 _pthread_wqthread
18 libsystem_pthread.dylib        0x1a484baa4 start_wqthread

com.twitter.crashlytics.ios.exception
SIGABRT ABORT 0x00000001a462f3c8

Crashed: com.twitter.crashlytics.ios.exception
0  Runner                         0x1003a9f38 CLSProcessRecordAllThreads + 153812
1  Runner                         0x1003aa320 CLSProcessRecordAllThreads + 154812
2  Runner                         0x100399b98 CLSHandler + 87348
3  Runner                         0x1003a853c __CLSExceptionRecord_block_invoke + 147160
4  libdispatch.dylib              0x1a4824244 _dispatch_client_callout + 16
5  libdispatch.dylib              0x1a47d6da0 _dispatch_lane_barrier_sync_invoke_and_complete + 56
6  Runner                         0x1003a7fa8 CLSExceptionRecord + 145732
7  Runner                         0x1003a7dd4 CLSExceptionRecordNSException + 145264
8  Runner                         0x1003a79c8 CLSTerminateHandler() + 144228
9  libc++abi.dylib                0x1a47ba304 std::__terminate(void (*)()) + 16
10 libc++abi.dylib                0x1a47ba29c std::terminate() + 44
11 libobjc.A.dylib                0x1a4509754 _objc_terminate() + 10
12 libdispatch.dylib              0x1a4824258 _dispatch_client_callout + 36
13 libdispatch.dylib              0x1a47d0624 _dispatch_lane_serial_drain$VARIANT$mp + 608
14 libdispatch.dylib              0x1a47d1018 _dispatch_lane_invoke$VARIANT$mp + 420
15 libdispatch.dylib              0x1a47da4a0 _dispatch_workloop_worker_thread + 588
16 libsystem_pthread.dylib        0x1a4848f64 _pthread_wqthread + 304
17 libsystem_pthread.dylib        0x1a484baa4 start_wqthread + 4

Hi @alectogeek
could you please provide your flutter doctor -v?
Thank you

@iapicca
[✓] Flutter (Channel master, v1.12.3-pre.10, on Mac OS X 10.14.6 18G103, locale en-RU)
    • Flutter version 1.12.3-pre.10 at /Users/alectogeek/Documents/Programs/flutter
    • Framework revision c90d64b619 (3 weeks ago), 2019-11-14 01:16:17 -0500
    • Engine revision 7c2a4ec97f
    • Dart version 2.7.0

[!] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/alectogeek/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-29, build-tools 29.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses

[✓] Xcode - develop for iOS and macOS (Xcode 11.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.2.1, Build version 11B500
    • CocoaPods version 1.8.0

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 39.0.3
    • Dart plugin version 191.8423
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[✓] Connected device (1 available)
    • iPhone 11 Pro Max • 8E93BC3A-81BE-446F-8EAE-BDA4A5978483 • ios • com.apple.CoreSimulator.SimRuntime.iOS-13-2 (simulator)

I guess, we can remove 'waiting for customer response' tag

Any updates here?

Hey 👋
Our rework of the firebase_auth plugin as part of the FlutterFire roadmap was published over a week ago with a ton of fixes and new features. Please could you try the new version and see if this is still an issue for you? If it is then please submit a new up to date GitHub issue.
For help migrating to the new plugins please see the new migration guide: https://firebase.flutter.dev/docs/migration


Markdown image link to Attlasian wiki format wrong conversion

I switched from 6.0-rc4 to 6.3.1 and found the problem with posting *md pages that contains links like
Markdown source
![cb-integration-components.png](cb-integration-components.png)

Produced Attlasian wiki output in 6.0
!cb-integration-components.png|alt="cb-integration-components.png"!

Produced Attlasian wiki output in 6.3.1
![Integration] CB^cb-integration-components.png|cb-integration-components.png!

This cause the problem when use XML/RPC API
Caused by: java.lang.Exception: java.lang.Exception: com.atlassian.confluence.rpc.RemoteException: [com.ctc.wstx.exc.WstxLazyException] com.ctc.wstx.exc.WstxParsingException: Unexpected '<'  in attribute value
 at [row,col {unknown-source}]: [470,100]
    at org.bsc.confluence.xmlrpc.Confluence.call (Confluence.java:937)
    at org.bsc.confluence.xmlrpc.Confluence.storePage (Confluence.java:324)
    at org.bsc.confluence.xmlrpc.XMLRPCConfluenceServiceImpl.storePage (XMLRPCConfluenceServiceImpl.java:248)
    at org.bsc.confluence.ConfluenceServiceFactory$MixedConfluenceService.storePage (ConfluenceServiceFactory.java:96)
    at org.bsc.maven.confluence.plugin.ConfluenceDeployMojo.lambda$updateHomeContent$2 (ConfluenceDeployMojo.java:573)
    at org.bsc.confluence.model.SiteProcessor.processPageUri (SiteProcessor.java:146)

Can revert to previous behaviur?

Hi @qwazer
I prefer try to keep as much as possible compatibility between version.
do you think that is not possible to achieve it?

I prefer try to keep as much as possible compatibility between versions.

Does it mean that you want to keep current behaviour with adding page titles to generated wiki text in 6.X?

do you think that is not possible to achieve it?

It depends on the Confluence wiki format. If it is possible to use encoding, etc in page titles inside wiki format, then the current behaviour of the plugin can be preserved.

refers to #187 #189

hi @qwazer
thanks for details .. I'll start to review the code asap to find out the best trade off

hi @qwazer
I've updated test  Issue189Test  in core module to verify your condition and seems that the parser work well also on current version in fact it generate !${page.title}^cb-integration-components.png|cb-integration-components.png!
Please could you check and let me know ?
Thanks in advance

@bsorrentino Yes the test is OK, But the problem begins when page title contains square braces [].
In our company these are widely used in confluence page titles.
When I try t post page with the title [Integration] CB and with attachment inside
![Integration] CB^cb-integration-components.png|cb-integration-components.png!

It produces errors above.
If I change title to simple CB it works fine.

I investigated it more deeply.
In case of XML-RPC Confluence produce error immediately.
In case of REST API Confluence doesn't produce error, but don't show attachment on the page.
I compared produced Storage Format in Confluence
The actual page title is [Design review] [Prism] CB integration module
Previously (plugin version 6.0-rc4):

<ac:image ac:alt="cb-integration-components.png"><ri:attachment ri:filename="cb-integration-components.png" /></ac:image>

Current with REST API (plugin version 6.3.1): - it produces unknown attachment in page

<ac:image><ri:attachment ri:filename="cb-integration-components.png"><ri:page ri:content-title="<ac:link><ri:page ri:content-title=" /> <ac:link><ri:page ri:content-title="Prism" /></ac:link> CB integration module" /></ri:attachment></ac:image>

May be to add some condition to not add titles if it was not used in original markdown file? Looks like it will solve the problem.

hi @qwazer
Thanks for great analysis, I'll try to find a solution

Hi @qwazer
I've update markdown processor to make it bit smarter. It means that the processor detects special characters (currently square bracket) in the title and switch off adding of ${page.title} prefix
I've deployed develop version 6.3.2-SNAPSHOT could you test it and let me know ?

HI @bsorrentino
The plugin of version 6.3.2-SNAPSHOT work nice for me!
Thanks!

Hi @qwazer
Thanks for quick feedback ... I'll arrange release soon

fix in release 6.3.2


style: normalize end of files

Fixes #826
Normalizes text file and ensures LF file endings, preventing line-errors on Windows (and WSL) env.

Looks like this breaks tests 😅

Have you tried * text eol=lf @kevinfrom?


code cleanup: console.log

Unexpected console statement

[ ] client/web/one/src/app.js#L94
[ ] client/web/workflow/src/components/WorkflowEditor.vue#L771
[ ] client/web/admin/src/app.js#L146
[x] client/web/compose/src/components/Namespaces/Importer/index.vue#L97
[x] client/web/compose/src/components/Namespaces/Importer/index.vue#L101
[ ] client/web/compose/src/components/PageBlocks/CommentBase.vue#L243
[ ] client/web/compose/src/components/PageBlocks/RecordListBase.vue#L1347
[ ] client/web/compose/src/components/PageBlocks/RecordListBase.vue#L1355
[ ] client/web/compose/src/components/PageBlocks/RecordListBase.vue#L1370
[ ] client/web/compose/src/components/PageBlocks/RecordOrganizerBase.vue#L244
[ ] client/web/compose/src/components/PageBlocks/Shared/AutomationTab.vue#L292
[ ] client/web/compose/src/components/PageBlocks/Shared/AutomationTab.vue#L306
[ ] client/web/compose/src/components/PageBlocks/Shared/AutomationTab.vue#L332
[ ] (look around ...)

Check webapps:

[x] compose
[x] admin
[x] reporter
[x] privacy
[x] one
[x] workflows
[x] discovery

All redundant console.log/error/debugger removed
Code:

2023.3.x  https://github.com/cortezaproject/corteza/commit/ee24191c708a20d9463ebbfe043fcd2b494918e3
2022.9.x https://github.com/cortezaproject/corteza/commit/6ab15de8d270932829afd9d9655ca5b9ff0659b6


Invalid Current State in publisher lifecycle

Description:
Invalid Current State in publisher's API lifecycle section once run the sample-scenario 7
Note: we have a custom lifecycle state in this sample
Affected Version
2.1.0-update4
Steps to reproduce:

Run the sample-scenario 7
Go to the publisher and click on the API Sales_promotions_API - 1.0.0

Lifecycle view is not correct with the state but lifecycle history captures the state change correctly.
please see the below image.

Fixed in https://github.com/wso2/carbon-apimgt/pull/5302


Fails to create file correctly via file explorer UI, lapce on Windows host with WSL project

      Host OS:  Windows 10
       WSL OS:  Ubuntu
Lapce Version:  v0.1.3

Just installed Lapce to give it a try and have encountered a problem when creating files via the file exlorer on the left hand side. When clicking on a folder a few levels deep of root and selecting New File - I fill in the name of the file but it creates a file with the parent folder name, escaped backslash and the name of the file I wanted to create.
This then fails to show in the explorer once created but can be seen via the terminal as below.
I am using lapce installed on windows, connected to WSL (ubuntu) with a WSL root workspace and suspect there is an issue with file creation via the UI, maybe it is trying to do some windows filesystem path escaping that doesn't work well with linux filesystem.
Images
Creating the file

Seeing the file via the terminal

I had this issue myself recently. Hoping to see this get merged so I can use Lapce in my WSL environment.


Standardize and simplify Rmd further (data = the same)

Updates:

Name each first chunk of section
Don't save raw_colnames (but remove with starts_with)
Use group_by_all
Use echo = FALSE (not F)
Don't use Pre-processing header
Verify scientificName is unique
Only sort at the end
Update some explanations
Correct some whitespace in code

Great!
I integrated the same changes as I did for https://github.com/trias-project/alien-macroinvertebrates/pull/43. If these changes are fine for you, you can merge this PR.
I will update the installation guide in a new PR (as this is not discussed in this PR here)

Added small update to description extension (see https://github.com/trias-project/alien-fishes-checklist/pull/20/commits/af6331d71aece5ab289e601d9c16953a489ff9ea why). Merging now.

Ah, I thought this was only the case for the description extension :smile:


I can't resume preview canvas

My environment is ok, as my new initial project with SwiftUI can resume preview canvas. But, in this project, I can't see preview canvas.
When I add below section:
#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        SearchUserView()
    }
}
#endif

I got:

SwiftUI-Combine-Example.app: Error Domain=render service Code=12 "Rendering service was interrupted" UserInfo={NSLocalizedDescription=Rendering service was interrupted}

Are you using MacOS Catalina?

Yes, I am using the Beta MacOS. :(

How did you resolve this?


Help on getting a minimal local example

Hello, I wanted to set up a minimal working example of message interchange between two processes on my machine using UDP broadcast. So far I have this:
Broadcaster
package main

import (
	"fmt"
	"mavtest"

	"github.com/aler9/gomavlib"
	"github.com/aler9/gomavlib/pkg/dialects/ardupilotmega"
)

func main() {
	// create a node which
	// - communicates with a serial port
	// - understands ardupilotmega dialect
	// - writes messages with given system id
	node, err := gomavlib.NewNode(gomavlib.NodeConf{
		Endpoints: []gomavlib.EndpointConf{
			gomavlib.EndpointUDPBroadcast{BroadcastAddress: "<IP_ADDRESS>:5660"},
		},
		Dialect:     ardupilotmega.Dialect,
		OutVersion:  gomavlib.V2, // change to V1 if you're unable to communicate with the target
		OutSystemID: 1,
	})
	if err != nil {
		panic(err)
	}
	defer node.Close()
	msg := &ardupilotmega.MessageParamValue{
		ParamId:    "test_parameter",
		ParamValue: 123456,
		ParamType:  ardupilotmega.MAV_PARAM_TYPE_UINT32,
	}
	node.WriteMessageAll(msg)
	for evt := range node.Events() {

		if frm, ok := evt.(*gomavlib.EventFrame); ok {
			fmt.Printf("received: id=%d, %+v\n", frm.Message().GetID(), frm.Message())

			// if message is a parameter read request addressed to this node
			if msg, ok := frm.Message().(*ardupilotmega.MessageParamRequestRead); ok &&
				msg.TargetSystem == 10 &&
				msg.TargetComponent == 1 &&
				msg.ParamId == "test_parameter" {

				// reply to sender (and no one else) and provide the requested parameter
				node.WriteMessageTo(frm.Channel, &ardupilotmega.MessageParamValue{
					ParamId:    "test_parameter",
					ParamValue: 123456,
					ParamType:  ardupilotmega.MAV_PARAM_TYPE_UINT32,
				})
			}
		}
	}
}

Client
package main

import (
	"fmt"
	"mavtest"

	"github.com/aler9/gomavlib"
	"github.com/aler9/gomavlib/pkg/dialects/ardupilotmega"
)

func main() {
	// create a node which
	// - communicates with an UDP endpoint in client mode
	// - understands ardupilotmega dialect
	// - writes messages with given system id
	node, err := gomavlib.NewNode(gomavlib.NodeConf{
		Endpoints: []gomavlib.EndpointConf{
			gomavlib.EndpointUDPClient{"<IP_ADDRESS>:5660"},
		},
		Dialect:     ardupilotmega.Dialect,
		OutVersion:  gomavlib.V2, // change to V1 if you're unable to communicate with the target
		OutSystemID: 10,
	})
	if err != nil {
		panic(err)
	}
	defer node.Close()

	// print every message we receive
	for evt := range node.Events() {
		if frm, ok := evt.(*gomavlib.EventFrame); ok {
			fmt.Printf("received: id=%d, %+v\n", frm.Message().GetID(), frm.Message())
		}
	}
}

But no messages are coming through on either of them.

Hello, in order to use broadcast you have to use two different PCs; in one of them (the one which is sending telemetry) you have to use use a broadcast endpoint
gomavlib.EndpointUDPBroadcast{BroadcastAddress: "<IP_ADDRESS>:5660"}

In the other (the one that is reading telemetry), a server endpoint
gomavlib.EndpointUDPServer{Address: "<IP_ADDRESS>:5660"}


Action Menu Demo broke

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
https://moti.fyi/examples/action-menu

Expected Behavior
No response
Steps To Reproduce
No response
Versions
https://moti.fyi/examples/action-menu

Screenshots
No response
Reproduction
https://moti.fyi/examples/action-menu

Yeah Expo snack is broken for Moti. I'm not sure why.


linux error

Traceback (most recent call last):
File "main.py", line 110, in
jsons = json.loads(u.getTasks())
File "/usr/lib/python2.7/json/init.py", line 339, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

i'm refix the problem check

thanks a lot solved you are a savior


Enable thermostat init function

Problem
Thermostat init  function not used/enabled.
Change overview
Enable thermostat init callback function.
Fix signatures
Sort enabling list
Use attribute store to keep featuremap value (but unsure if this is correct or works)
Fix code compilation
Testing
Not tested, hence draft.

Suggest to Kill this PR.
I made the helper.js and rebuilt and made the  desired thermostat functionality in PR 12863.
Made sure that Andrei and Boris  are both on as approvers for review


Save / override / build selection / comparison is awefull

Please fix the build save and select procedure. I can't count how often I overwrote a build despite having the correct build selected.  Its really really REALLY frustrating. Its so frustrating I make back ups of the save file every time I successfully changed and saved something, because I lost so many builds.
Make it so, that only one build can be selected and it is always highlighted and always saved to. So click, double click, triple click, and all the other clicks select one "totally awesome build" and highlight it. And if you click safe it asks you, do u want to override "totally awesome build"
Make the comparison work with a drop down menu where u select on of the saved build to not get confused by which build is actually selected.
Other then that i have no complaints program works awesome!

You double click to 'open' a build. The name of the build you have open is
in the top left corner (title bar). The build that is open also displays a
different character icon (grayed out). You can select other builds (single
click) to compare the two trees.
Why make a second list of all the builds when we can have a single one with
easy selection?
On Jun 8, 2016 12:54 PM, "restinpieces"<EMAIL_ADDRESS>wrote:

Please fix the build save and select procedure. I can't count how often I
overwrote a build despite having the correct build selected.  Its
really really REALLY frustrating. Its so frustrating I make back ups of the
save file every time I successfully changed and saved something, because I
lost so many builds.
Make it so, that only one build can be selected and it is always
highlighted and always saved to. So click, double click, triple click, and
all the other clicks select one "totally awesome build" and highlight it.
And if you click safe it asks you, do u want to override "totally awesome
build"
Make the comparison work with a drop down menu where u select on of the
saved build to not get confused by which build is actually selected.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/EmmittJ/PoESkillTree/issues/336, or mute the thread
https://github.com/notifications/unsubscribe/AHIbbXyhmit0VDyeWRp4r8yLBnKjonJfks5qJx4RgaJpZM4IxViI
.

Because sometimes compact isn't intuitive nor user friendly? The whole double click  single click is not intuitive and the two selected builds almost look the same. You don't need a full blown list. just a drop down list for the comparison build selection. There would be zero likelihood of confusion. Or heck at least give one a green and the other one a red background.

Single click selecting and double click opening something is standard behavior for pretty much everything.


Add backend route for Configmaps and secrets for MR namespace

Closes: RHOAIENG-15899
Description

Fetch config maps and secrets in model registry namespace and added hook for the same
Lazy loading(Skeleton) when one clicks on the checkbox
Added logic to disable/enable the first two options

If the data from the new hook has no ConfigMap with the name odh-trusted-ca-bundle or that ConfigMap does not include the key ca-bundle.crt, disable the "Use cluster-wide CA bundle" radio button and add a tooltip "No certificate is available in the cluster-wide CA bundle".
If the data from the new hook has no ConfigMap with the name odh-trusted-ca-bundle or that ConfigMap does not include the key odh-ca-bundle.crt, disable the "Use ${ODH_PRODUCT_NAME} CA bundle" radio button and add a tooltip "No certificate is available in the ${ODH_PRODUCT_NAME} CA bundle".

Under "Choose from existing certificates":

In the Resource dropdown, replaced the mock options with the names of the secrets and configmaps fetched with hook.
Make the Key field disabled with the placeholder "Select a resource to view its available keys" until a Resource is selected. When a Resource is selected, populate the Key dropdown from the keys of that secret or configmap.

Screen Recording:
https://github.com/user-attachments/assets/3cf2a631-5f56-4bc6-a7eb-71a0ba553fbb
Screenshots:

How Has This Been Tested?

Enable disableModelRegistrySecureDB feature flag on your cluster to see the checkbox in the Create model registry modal
Once you click on the checkbox, you should see a loading state while the config maps and secrets load
Once that is loaded, some checkboxes may be disabled based on the data provided in the description of the radio buttons(first two radio buttons)
Third radio button: The config maps and secrets should be populated in the dropdown and the second dropdown should populate according to the config maps/secrets name selected in first dropdown.. second dropdown should be disabled if first dropdown is not selected.

Test Impact

Tests will be added in a later PR.
Request review criteria:

Self checklist (all need to be checked):

[X] The developer has manually tested the changes and verified that the changes work
[X] Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
[X] The developer has added tests or explained why testing cannot be added (unit or cypress tests for related changes)

If you have UI changes:

[X] Included any necessary screenshots or gifs if it was a UI change.
[X] Included tags to the UX team if it was a UI/UX change.

After the PR is posted & before it merges:

[ ] The developer has tested their solution on a cluster by using the image produced by the PR to main

WIP coz I need to add tests and a few tooltips

@yih-wang do you think the Skeleton should be a larger EmptyState with spinner? I wasn't sure how we should handle loading the data for these fields. I don't think we can just show the radio buttons immediately and skeletons for the dropdowns, because we need to load the data to know whether the first two radio buttons should be enabled. I think in another thread we had discussed having a loading state for the whole section like this.

I think, we had this discussion here in this issue: RHOAIENG-15879.

I think, we had this discussion here in this issue: RHOAIENG-15879.

Ah thanks @ppadti, yeah so we should use an EmptyState with a large spinner for the whole section rather than a skeleton I think.

Ah thanks @ppadti, yeah so we should use an EmptyState with a large spinner for the whole section rather than a skeleton I think.

@mturley Seems you already have the answer! Yes let's use a spinner for loading the whole section under the checkbox.

All look good. Awesome work! Thank you @manaswinidas!


Style guidelines

Currently the project has a basic .eslintrc set up but I think it'd make contributing easier and more consistent if we opted to use js standard style. Many projects (including npm, GitHub and the UK government) use this style

From my point of view this is ok. What are the risks? Is it possible that some parts are not working then or is it just the style-formating of the code?

Most of the rules can be automatically fixed (and there's a very simple option to autofix everything). Some things cannot and would be highlight and need manually fixing (not too difficult)

If we did our best to use conventional commit style that'd be a great help to future releases as changelogs could then be automatically generated. There are many tools for enforcing/suggesting this and also for making writing these commits as easy as possible.

If we did our best to use conventional commit style that'd be a great help to future releases as changelogs could then be automatically generated. There are many tools for enforcing/suggesting this and also for making writing these commits as easy as possible.

Should we apply commitlint using https://www.npmjs.com/package/husky?

The issue is about code style, not just commit style, I don't think it can be closed yet.

Can we close it now? The conventional commit style is now enforced via Husky. Please confirm and/or close.

Can we close it now? The conventional commit style is now enforced via Husky. Please confirm and/or close.

As said in the comment above, this original issue is about enforcing the code style (indentation, etc.), not only the commit message format.

Ah sorry, my misktake. Didnt read properly. As far as i remember, there was a automatic code styling applied though, when i was writing some changes. Maybe it was serverside at CI Level.

Hello @ChildishGiant
Now I understand what you meant. Sorry for that. I saw that there is a devDependency installed (prettier).
I also use prettier locally.
I think we can create a prettier Configuration file locally for VSCode so that we all have the same code styles applied.
But I think it is overpowered to use it server-side (via GH Actions)
What do you think?
PS: Where are you all? :laughing:  Hope you all are doing fine and thank you all for starting Materialize.


lncli unlock does not unlock wallet

Background
Whenever I try to unlock my wallet, it appears to succeed, but afterwards getinfo shows that the wallet is still locked:
$ lncli --lnddir /bitcoin/lnd/ --rpcserver <IP_ADDRESS>:9999 unlock

Input wallet password:

lnd successfully unlocked!

$ lncli --lnddir /bitcoin/lnd/ --rpcserver <IP_ADDRESS>:9999 getinfo

[lncli] Wallet is encrypted. Please unlock using 'lncli unlock', or set password using 'lncli create' if this is the first time starting lnd.

I'm not sure what I'm doing wrong here, I have previously run lncli --lnddir /bitcoin/lnd/ --rpcserver <IP_ADDRESS>:9999 create and the procedure appeard to finish succesfully.... :thinking:
My bitcoind conf looks like this (rpc auth section ommited)
rpcauth=lnd:<HASH>
dns=0
bind=<IP_ADDRESS>
rpcbind=<IP_ADDRESS>:8888
proxy=<IP_ADDRESS>:9050
listen=1
server=1
rest=1
txindex=1
onlynet=onion
zmqpubrawblock=<IP_ADDRESS>:42069
zmqpubrawtx=<IP_ADDRESS>:42096

and I'm running lnd like this:
lnd \
  --tor.active \
  --tor.socks=<IP_ADDRESS>:9050 \
  --tor.streamisolation \
  --autopilot.active \
  --bitcoind.dir="/bitcoin/bitcoind" \
  --bitcoind.rpcuser=lnd \
  --bitcoind.rpcpass=<PASSWORD> \
  --bitcoind.zmqpubrawblock=<IP_ADDRESS>:42069 \
  --bitcoind.zmqpubrawtx=<IP_ADDRESS>:42096 \
  --bitcoin.active \
  --bitcoin.node=bitcoind \
  --bitcoin.mainnet \
  --lnddir="/bitcoin/lnd" \
  --tlsextraip=<IP_ADDRESS> \
  --tlsextraip=<IP_ADDRESS> \
  --rpclisten=<IP_ADDRESS>:9999

Your environment

version of lnd: 0.11.0
which operating system (uname -a on *Nix): Linux bitcoin 5.4.66 #1-NixOS SMP Thu Sep 17 11:47:56 UTC 2020 x86_64 GNU/Li nux
version of btcd, bitcoind, or other backend: Bitcoin Core version v<IP_ADDRESS>-g7ff64311bee570874c4f0dfa18f518552188df08
any other relevant environment details: running inside a systemd-nspawn container

Can you please take a look at the logs? Maybe lnd stops for some reason and is then restarted by systemd in the unlocked state.

Oups, I hadn't looked back far enough in the logs. This was exactly the issue. For future reference there were two issues with the above config:

bitcoind requires that the zmq address config is prefixed with tcp://
lnd expects the bitcoind rpc port to be 8332

Thanks for the help!!!! :pray: :sparkles:


ISPN-11106 Export 'base' and 'vendor' microprofile metric registries

https://issues.redhat.com/browse/ISPN-11106

Merged


a suggestion allowing suspension of validator waive of penalty.

Hi there, I saw this "Users need to make sure their validator doesn't have downtime or they risk a quadratic leak on their stake.“  Is there a way for validator to suspend service due to maintenance ? Otherwise it is quite unfair to validator who want to switch server or do maintenance job. So during the suspension period, they won't get reward.
The original proposal would scare off lots of ordinary people who want to join validators team, which requires redundant validator client.  People using their own computer to validate may encounter power off, computer upgrade. This will happen even if people use aws.

Users will only face a quadratic leak if the chain is not finalizing, i.e. at least 1/3 of validators are offline overall.
It will only have a very small impact if it only happens for a few hours or a day. I generally agree that this could deter a few people from becoming validators, and I think the impact of allowing say 1 day of downtime per year would be very small. However, it's probably not worth the added complexity.

In normal chain finality conditions, having ~50-60% uptime keeps a validator in the black. Being about to suspend validation introduces significant consensus complexity and the validator would still be subject to activation/exit queues/times.
Once validator Transfers are added, the normal flow for suspending would be to exit, then to later Transfer eth to a new validator account for new activation.


Use explicit export list

Closes folq/haskell-to-elm#8.
Potential bike-shedding:

Pretty printing: I've mimicked what elm-format does for lists that don't fit on a single line. We could provide a special case so that exports are written on one line when possible (I think prettyprinter makes this quite easy), but there doesn't seem much point.
I'm in the habit of using LambdaCase far more than traditional case syntax, but you may have reasons for wanting to avoid unnecessary extensions.
This could be made optional, but I don't see any real downside to having it always enabled.

Looks great, thanks!

About the last point: it might be that we want to support private definitions, i.e. that aren't exposed from their module, in this library at some point, which would make explicit export lists mandatory.


Standalone implementation of NARA file harvesting.

I built a tar DataSource here. Unfortunately, it requires as much memory per tar file as the uncompressed parts of the tar. I've committed it as part of this pull request in case we think it would be useful to keep around.
The working NARA harvest is a standalone, non-Spark command line invocation that converts their tar files of big XML files to Avros of individual item records.

This is rebased on develop and contains bindings for the originalrecord schema.


US_3.17: Language

As
not-German user
I want to
have a English version of the main webpages
in order to
get information about international workshops.
Tasks
Acceptance Criteria

all content can be viewed in German

the navigation bar can be viewed in English

application pages can be viewed in English

@tobiduer "all content"?

@aloeser: content = text of the web pages. Does this answer your question?

Do you mean all web pages from all teams or only from our team?

@tobiduer Does the UI need a button to change between the German and English version?

@baschdl: All web pages should be translated. This US can be done in cooperation with other teams. We will discuss this is person.
Yes, a button for switching the language would be good.


Set boundaries when moving crop box

Hi everyone,
I have encountered some difficulties, hope to get some help here.
I am working on a project which allows users to upload an image and then crop the selected area to save into file. The minimum crop area has been defined which does not allow to crop less than a specific value. However, users may upload image size less than the minimum crop area. I have to set strict to be false to display original image without stretch it to the same size as crop box. Users should not move the crop box out of image height and width, as container is much bigger than uploaded image size. Is there any way to set the boundaries when moving crop box?

Thank you in advance for your time and support!

Try cropmove event:
$().cropper({
  cropmove: function (e) {
    var canvasData = $(this).cropper('getCanvasData');
    var cropBoxData = $(this).cropper('getCropBoxData');

    if (
      cropBoxData.left < canvasData.left ||
      cropBoxData.top  < canvasData.top  ||
      cropBoxData.left + cropBoxData.width > canvasData.width + canvasData.left ||
      cropBoxData.top + cropBoxData.height > canvasData.height + canvasData.top
    ) {
      e.preventDefault();
    }
  }
})

e.preventDefault(); will totally stop the crop box from moving. In the situation I described, users should be able to move the crop box but only horizontally or vertically.

use viewMode Option


punk causes too much space properties.tex

Depending where I insert the punk statement I get too much space:
\avm{
[\punk{head}{ \1}\\
 head-dtr & [head & \1]]
}

Either before [1] or before [HEAD [1]].

Would this be acceptable?

\avm[align=false, vectorsep=1ex]{
		[head &  \1\\
		head-dtr & [head & \1]]
}

Well, this solution gets rid of the problem by getting rid of punk, which is of course my preferred solution, but if you want to keep punk for whatever reason you may want to fix the original issue.


Payload and device token validations

These validations are brought over from a closed source library. All of these validations are opt-in. They aren't performed automatically.

APS notifications can contain just custom data without a badge or body, but Buford has no way of knowing if custom data will be added later.
Passbook notifications are completely empty, but it doesn't really make sense to use APS or even serialize JSON when you can just use PushBytes with {}.
Newsstand notifications are empty except for ContentAvailable. APS won't validate a payload like this right now. Newsstand isn't really a thing anymore, but maybe there are other cases where only ContentAvailable should be set? This could be another case where serialization can be skipped.
ContentAvailable-only notifications must be used with the LowPriority header, but these are set in different packages so no attempt is made to validate this.
Device tokens may get larger in the future. #13

These validations should probably be verified against the Apple documentation to make sure they are still the correct thing to do.
I haven't done anything to validate the push Headers yet, such as the UUID format for the ID or that the expiration is in the future.

Awesome LGTM
thanks!


[stable/drone] Fix extraContainers indentation

Reverts indentation change from https://github.com/helm/charts/pull/14306
so that extraContainers can be overridden like this
server:
  extraContainers: |
    - name: extra-container
      image: "docker.io/some/image:1.0"
      imagePullPolicy: IfNotPresent

If you run helm template with this configuration you will get a container section like this
containers:
- name: server
  image: "docker.io/drone/drone:1.1.0"
  imagePullPolicy: IfNotPresent
<...>
- name: extra-container
  image: "docker.io/some/image:1.0"
  imagePullPolicy: IfNotPresent

This has the correct indentation, and deploys correctly.
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Title of the PR starts with chart name (e.g. [stable/chart])

@zakkg3 I created this PR btw. Ref: our discussion from https://github.com/helm/charts/pull/14284#issuecomment-503008539

/ok-to-test

/lgtm

thanks


Problems with make - Windows

It seems the Makefile.mingw has spaces before some commands and make requires TABs:
Makefile.mingw:65: *** missing separator (did you mean TAB instead of 8 spaces?).  Stop.

I will generate a PR if you like.

It also appears that the Windows Sockets library (ws2_32) is required by the linker commands.

Seems I can't make a new PR for some reason

I merged the pull request. Thanks.


Modify sprite size when synced to a rigid-body

Hi, first of all, thanks for your work!
I am trying to set up collision to work on Bevy with Rapier. I have an entity with a rigid-body + collision working. The problem arises when I add a sprite (texture) and it's too big. How can I adjust only the sprite size, without modifying the collision shape size?
Note that I am using RigidBodyPositionSync::Discrete.
fn playership_spawn(
    mut commands: Commands,
    assets: Res<AssetServer>,
    rapier_config: ResMut<RapierConfiguration>,
) {
    let playership = ship::Ship::new_from_type(ship::ShipType::StandardShip);

    let playership_sprite_handle = assets.load(PLAYER_SPRITE_PATH);

    let rigid_body = RigidBodyBundle {
        position: Vec2::new(0.0, -215.0).into(),
        velocity: RigidBodyVelocity {
            linvel: Vec2::new(0., 0.).into(),
            angvel: 0.,
        }
        .into(),
        activation: RigidBodyActivation::cannot_sleep().into(),
        ccd: RigidBodyCcd {
            ccd_enabled: true,
            ..Default::default()
        }
        .into(),
        ..Default::default()
    };

    let collider = ColliderBundle {
        shape: ColliderShape::ball(5.).into(),
        collider_type: ColliderType::Sensor.into(),
        flags: (ActiveEvents::INTERSECTION_EVENTS).into(),
        position: [0., 0.].into(), // relative to rigid-body
        ..Default::default()
    };

    let sprite = SpriteBundle {
        transform: Transform {
            ..Default::default()
        },
        texture: playership_sprite_handle,
        ..Default::default()
    };

    commands
        .spawn_bundle(rigid_body)
        .insert_bundle(collider)
        .insert_bundle(sprite)
        .insert(InGameComp)
        .insert(Player1)
        .insert(RigidBodyPositionSync::Discrete)
        .insert(ColliderDebugRender::default())
        .insert(playership);
}

The sprite bundle transform should have scale.

I had already tried changing Transform scale from SpriteBundle but it simply doesn't work.

Hello,
That's weird, as changing the scale attribute should be working.
What version of Bevy are you using ? 0.6.1 ?
You can also try to set a custom size to your sprite using the custom_size attribute.

I didn't know about this custom_size attribute. It worked!
Should Transform's scale work even if the position is synced with rigid-body? (RigidBodyPositionSync::Discrete)
I even tried to change GlobalTransform's scale, but it didn't work as well...
Here's my cargo toml:
[package]
name = "game"
version = "0.1.0"
edition = "2021"
[dependencies]
bevy = "0.6.1"
bevy_rapier2d = { version = "0.12.1", features = [ "simd-stable", "render" ] }

Glad that it worked!

Should Transform's scale work even if the position is synced with rigid-body? (RigidBodyPositionSync::Discrete)

Yes it should work as syncing the position of the rigid-body with Bevy transform does not change the scale attribute, so it won't overwrite it. It only updates the translation (here x and y since you are using bevy_rapier2d) and the rotation attributes.
You can take a look at the method that takes care of it here:
https://github.com/dimforge/bevy_rapier/blob/83975ce0f26171e628a703f9db1c7873343befcc/src/physics/systems.rs#L362-L369
How did you modify your code to change the scale of your sprite?

I even tried to change GlobalTransform's scale, but it didn't work as well...

If you want to move, rotate or change the scale you entity, you should set its Transform. Use GlobalTransform to get the global position of an entity. You can learn more about Transform and GlobalTransform here.

I was doing like this:
let mut sprite = SpriteBundle {
    transform: Transform {
        scale: Vec3::new(0.1, 0.1, 0.), // not working
        ..Default::default()
    },
    texture: enemyship_sprite_handle,
    ..Default::default()
};

Now with your hint I am doing like this:
let mut sprite = SpriteBundle {
    transform: Transform {
        scale: Vec3::new(0.1, 0.1, 0.), // not working
        ..Default::default()
    },
    texture: enemyship_sprite_handle,
    ..Default::default()
};

sprite.sprite.custom_size = Some(Vec2::new(3., 3.));

Okay, I don't know why it does't work.
For example if you do that with the Bevy sprite example, it works:
use bevy::prelude::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_startup_system(setup)
        .run();
}

fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn_bundle(OrthographicCameraBundle::new_2d());
    commands.spawn_bundle(SpriteBundle {
        texture: asset_server.load("branding/icon.png"),
        transform: Transform {
            scale: Vec3::new(0.1, 0.1, 0.),
            ..Default::default()
        },
        ..Default::default()
    });
}

There's maybe something elsewhere that causes the issue, I don't know.

The big problem is that, in the code below, scale works just fine.
Then I think that it comes from the debug feature of bevy_rapier.
Does it work if you only comment this line : .insert(ColliderDebugRender::default())?

When I comment that line, everything seems to work fine. Probably just a bug in ColliderDebugRender then...

There are two other issues mentioning this problem: #35 and #105.
A PR was also created to fix it but it never got merged: #49.
Perhaps we should ask @sebcrozet why?

@Beebeille The debug-render is being completely rewritten for the next release (at the end of next week), and will become much less intrusive.
So #35 and #105 (and this issue) will be closed soon.

Great, thank you for your answer!

Fixed with bevy_rapier 0.13. Please reopen if the problem persists.


Admin | Sync Template v2 flow throws 403 error (Forbidden) for Team Environment

Describe the bug
Admin | Sync Template v2 flow is showing 403 ERROR when it executes for a Team Environment. The inner exception message says "Failed to execute Skype backend request GetThreadRequest."
Component (please tell us which flow or app you are experiencing issues with):

Core [e.g. Core, Nurture]
1.71.1
Admin | Sync Template v2

To Reproduce
Steps to reproduce the behavior:

Execute the the flow manually.

Expected behavior
The flow should be executed without any error for any kind of environment.
Screenshots

Additional context
We have configured the Team connection using service Account which has Power Platform Admin privileges. Could you please let me know if any configuration we are missing here?

I have this same error.

Hello,
this step tries to gather further information about a Microsoft Dataverse for Teams environment. Whilst we investigate this issue, can you help me understand two things

Despite the error, has this environment successfully been added to CoE tables - you can check by going to the Power Platform Admin View and selecting Environments to look for this
Despite this error, did the flow continue to gather information about other environments and are all your environments present in the CoE table - you can check by going to the Power Platform Admin View and selecting Environments to check if you can see all of them

I'm trying to establish if this error is blocking gathering information for other environments, or if it just means some information for this specific environment is then missing.
Thank you

I have the same error.
It's on the "Get Teams" action.
I think, it's because the service account must be Teams administrator ?
Can you change this flow so we don't have to add Teams administrator rights in addition to the Power Platform admin rights ?
Thanks

Does your service account have a Teams license?

No

I think the account will need a Teams license (not Admin) but we are investigating. In the meantime, this error should not be blocking in that all environments should still be collected and shown in the dashboard and admin apps. Can you verify that's true for you?

Hi Manuela, PFB my inline comments

Despite the error, has this environment successfully been added to CoE tables - you can check by going to the Power Platform Admin View and selecting Environments to look for this. => The environment  for which the issue occurred  was not added.

Despite this error, did the flow continue to gather information about other environments and are all your environments present in the CoE table - you can check by going to the Power Platform Admin View and selecting Environments to check if you can see all of them => Despite the error the flow continued to work cause all other environments are present inside the Power Platform Admin View.

Thank you.

I think the account will need a Teams license (not Admin) but we are investigating. In the meantime, this error should not be blocking in that all environments should still be collected and shown in the dashboard and admin apps. Can you verify that's true for you?

I think, if the service account does not have access to the Teams (not Teams admin or not member of the private Teams), the "Get Teams" action will fail.

Hi,
I switch the account of Teams connection with my personal user, than it can be use teams and the flow fails with the same error.

Hi! We found the same problem and that adding the service account to the Team membership gave us the environment record. Obviously the problem is how do we get access to new environments

Your Power Platform Admin will have access to Microsoft Dataverse for Teams environments to retrieve that information; however getting additional information about the Microsoft Teams the environment is linked to seems to be leading to access issues. But the environment itself you will have access to.

Hello,
thank you for all your feedback on this - we removed the Get a Team action now, and released an update on Friday!
Manuela


EDDI now imports only 7 days of EDSM flight logs

With the EDSM API key entered, pressing Obtain log in EDDI will now only import the previous 7 days of flight logs from EDSM. This is due to a recent change by EDSM.
Info from AnthorNet of EDSM in response to my question about the issue:
"thx
yes i had to change how the get-logs api works to maintain performance across all users.
Now they can be retrieved by batch of one week. Make it easier then always grab more then 60k logs for some users !
You should ask EDDI developer to update. "
Forum posts in the threads for both tools:
https://forums.frontier.co.uk/showthread.php/294579-EDDI-Windows-app-for-immersion-and-more?p=5271095&viewfull=1#post5271095
https://forums.frontier.co.uk/showthread.php/179063-EDSM-Elite-Dangerous-Star-Map?p=5275674&viewfull=1#post5275674
EDDI versions affected: 2.2.0 and 2.2.1
Hope that helps.
Thanks for this brilliant app,
Adrian

Thank you for reporting this.  This will be addressed in the next release.

The fix for this has been incorporated in to EDDI 2.3 (currently in beta).


[task/ansible]: collect logs when the test fails

Signed-off-by: Vasu Kulkarni<EMAIL_ADDRESS>

http://pulpito.ceph.com/vasu-2017-06-22_21:30:50-rgw-master-distro-basic-vps/

retest this please

retest this please


Set default feature gates of unsupported features to false on Windows

A feature might be enabled by default on Linux, but is not supported on
Windows, so set the default feature gates of such features to false on
Windows.
Signed-off-by: Jianjun Shen<EMAIL_ADDRESS>

Codecov Report

Merging #3527 (46f5101) into main (b9e37a8) will decrease coverage by 20.81%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             main    #3527       +/-   ##
===========================================
- Coverage   64.17%   43.35%   -20.82%
===========================================
  Files         278      210       -68
  Lines       27825    25223     -2602
===========================================
- Hits        17856    10936     -6920
- Misses       8048    13195     +5147
+ Partials     1921     1092      -829

Flag
Coverage Δ

kind-e2e-tests
?

unit-tests
43.35% <ø> (-0.02%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

pkg/ovs/openflow/default.go
0.00% <0.00%> (-100.00%)
:arrow_down:

pkg/util/runtime/runtime.go
0.00% <0.00%> (-100.00%)
:arrow_down:

pkg/agent/openflow/groups.go
0.00% <0.00%> (-100.00%)
:arrow_down:

pkg/agent/nodeportlocal/k8s/annotations.go
0.00% <0.00%> (-100.00%)
:arrow_down:

pkg/ovs/openflow/ofctrl_pipeline.go
0.00% <0.00%> (-93.34%)
:arrow_down:

pkg/ovs/openflow/logs.go
9.52% <0.00%> (-90.48%)
:arrow_down:

pkg/apis/controlplane/register.go
0.00% <0.00%> (-90.48%)
:arrow_down:

pkg/agent/controller/networkpolicy/reject.go
0.00% <0.00%> (-87.91%)
:arrow_down:

pkg/agent/openflow/egress.go
0.00% <0.00%> (-84.22%)
:arrow_down:

pkg/flowaggregator/certificate.go
0.00% <0.00%> (-77.48%)
:arrow_down:

... and 190 more

Maybe in NetworkPolicyOnly mode, feature gate Egress should be also set to false.

Maybe in NetworkPolicyOnly mode, feature gate Egress should be also false anyway.

Feature gate should be for code isolation, but not to enable/disable a feature (e.g. when enabling the feature has overhead or leads to unexpected behavior in some configuration). So, we should not auto-disable feature gates based on configuration in my mind. If we believe enabling Egress with NetworkPolicyOnly mode will result in some unexpected issues, we should do internal checks to avoid such issues. @tnqn

Maybe in NetworkPolicyOnly mode, feature gate Egress should be also false anyway.

Feature gate should be for code isolation, but not for configuring a feature (e.g. when enabling the feature has overhead or leads to unexpected behavior in some configuration). So, we should not auto-disable feature gates based on configuration in my mind. If we believe enabling Egress with NetworkPolicyOnly mode will result in some unexpected issues, we should do internal checks to avoid such issues. @tnqn

I wonder if we should still use a separate variable to determine whether we should activate a feature. A feature will eventually graduate to GA and be locked to true (or even removed from feature gates?) but it's still possible it shouldn't be activated in some scenario, like Egress in networkPolicyOnly mode.

I agree we should check internally for features that can lead to cost or unexpected behavior once enabled. On the other hand, I feel this PR has nothing wrong to disable the feature gate on Windows, as it still looks confusing an unsupported feature is enabled (e.g. from antctl output). What you think? @tnqn

I agree we should check internally for features that can lead to cost or unexpected behavior once enabled. On the other hand, I feel this PR has nothing wrong to disable the feature gate on Windows, as it still looks confusing an unsupported feature is enabled (e.g. from antctl output). What you think? @tnqn

Make sense to me.

/test-all

/test-windows-e2e
/test-integration


doc: DRAFT start for 1.12 release notes

Get the 1.12 release notes started with material derived from the 1.12
roadmap (closed issues) and headings from the 1.11 release notes.
Signed-off-by: David B. Kinder<EMAIL_ADDRESS>

Codecov Report

Merging #7277 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master   #7277   +/-   ##
======================================
  Coverage      55%     55%
======================================
  Files         474     474
  Lines       51718   51718
  Branches     9935    9935
======================================
  Hits        28447   28447
  Misses      19308   19308
  Partials     3963    3963

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 f7f56cc...c478a67. Read the comment docs.

@MaureenHelm fixed.


Set the default ulimits to match Docker

We want to set the maximum number of processes and number of open files
to match the Docker defaults.
nofile=1048576:1048576, nproc=1048576:1048576
Signed-off-by: Daniel J Walsh<EMAIL_ADDRESS>

@nalind PTAL

What's the rationale setting just these two defaults?  Your testing out-of-band also saw a difference in the limit for queued signals.
Can we update the docs to list the correct syntax for the argument values?  Can we add tests for this?

When invoked by an unprivileged user, this appears to trigger an EPERM when it attempts to raise hard limits.

Yes I was thinking of this causing issues. I guess we should set it to the Hardlimit for the user.

@nalind @umohnani8 @pixdrift @giuseppe @TomSweeneyRedHat PTAL

LGTM

@rh-atomic-bot r=umohnani8

LGTM

@rh-atomic-bot retry

@rh-atomic-bot -rgiuseppe

@rh-atomic-bot -r=giuseppe

@rh-atomic-bot r+

@rh-atomic-bot retry


not able to search extensions

Type: Bug
error displayed:- "Error while fetching extensions.XHR failed"
Not able to download any extensions
VS Code version: Code 1.71.2 (74b1f979648cc44d385a2286793c226e611f59e7, 2022-09-14T21:03:37.738Z)
OS version: Windows_NT x64 10.0.22621
Modes:
Sandboxed: No

A couple of other similar issues were reported but end up being transient and do not exist now. Hopefully, the issue was transient and is resolved now. Closing the ticket. In case the issue exists, please feel free to re-open the ticket. Thanks.


add clippy book to Rust dropdown menu

It came to my attention that docs.rs has nothing about clippy, despite it being an official Rust component for a while. This PR puts the nightly clippy book into the Rust dropdown menu so people will have an easier time finding it.

I'm a bit shared on this: the menu is already quite big and list learning resources. Clippy seems to be a step too far: when you use clippy, you already have knowledge about Rust. In short: it's advanced usage rather than "learning basics". Well, we'll see what the others think about it.

when you use clippy, you already have knowledge about Rust

I sure hope that's not the case. Many clippy lints explicitly benefit newcomers, sometimes at the expense of #[allow(..)] annotations by those who know what they're doing. Ah well, your reply proves my point is that clippy is still under-advertised. 😁

Another point here: We have started the "clippy book", which has more detailed instructions on how to use clippy (as opposed to just describing the lints). It's a work in progress for now, but once the dust has settled, it could be a better thing to link from docs.rs.

I think this list should be, in order of importance:

only official resources (rust cookbook is iffy, I would prefer to remove it)
only documentation; docs.rs cannot be all things to all people and the point of the site is docs. That suggests we should remove the top-level link to crates.io, which seems good to me, we already link to individual crates on the /crate page. It also suggests we should remove the link to rust-lang.org, which I'm more ambivalent about - RLO is a good jumping off point for links that we don't have on docs.rs itself.
only something you'd use while writing code. This is the one that would rule out clippy lints; clippy already links to the lint reference when it emits a lint, I'm not sure how useful it is to link it here.

That said, having links on docs.rs definitely adds to discovery. If we can instead link to a "clippy guide", or a more general page that recommends official tools, that seems good to me. But having just the lint reference seems kind of strange imo.

also, I implied above but didn't say it explicitly - if we reject the lint reference, then we're holding it to a higher standard than some of the existing links. We should clean up the list if we reject this PR, it shouldn't be frozen as is.

The nightly clippy book is at https://doc.rust-lang.org/nightly/clippy, so I'm going to update this PR to include the book instead of the lint list.

I think having a nightly link is already good enough. Once the stable link is available, we'll just update it.

Done.
r? @jyn514 @GuillaumeGomez

Looks good to me, thanks! I'll send a PR later on to remove the other links too.

@llogiq I think you forgot to push your changes.

Strange. I had pushed the update, but for some reason github failed to update the PR. Well, it seems to be up to date now.

r? @jyn514

Ping? How do we go from here?

I haven't had time to look at this, sorry. I'll try and make time this weekend.

@jyn514 Done in https://github.com/rust-lang/docs.rs/pull/1820.


Add commandline options to build.js

So we wanted to be able to easily build a single version of iohook.node from source without having to build a version for every single node/electron version (default behavior) and also without attempting to upload the built files to GitHub afterwards (which causes an error for anything other than the CI).
So this PR adds a few options to build.js:

--no-upload prevents attempting to upload builds to GitHub after they're completed
--version, --runtime and --abi flags, which if all set will instead build a single specified version of iohook, and skip those specified in package.json.

As an example, to build for Electron v4.0.4 and prevent uploading afterwards, you would run:
node build.js --runtime electron --version 4.0.4 --abi 69 --no-upload

Requires the use of a new library, minimist, which does cmdline flag parsing. Initially tried doing this without a library but the code got quite messy.

LGTM. Would you mind adding something into the README or documentation ? Anyway -- Cool feature!  Thanks !

Added, thanks!


---@module not working as documented

Hello, im trying to make a document using emmylua in order to add intelisense for not loadable plugins (Nakama - Lua).
So far so good, everything its working as expected except @module
Tried to declare it as ---@module nakama, ---@module "nakama", ---@module 'nakama' to no avail.
Is this an error on my end or is it bugged and not working as described in the documentation?
The error I get is PARSER_LUADOC_MISS_MODULE_NAMELua Syntax Check.(luadoc-miss-module-name)
Is it possible to exclude the whole nakama.lua file from diagnostics? All the config options seems to not work on my end, but it can be an issue on how im using it TBH.

I just test ---@module 'nakama' and it works as expect.

Strange, mind taking a look at the full file? Maybe theres an error on my end
`---@class Account
---@field public metadata table
---@field public wallet table
---@field public username string
---@field public display_name string
---@field public timezone string
---@field public location string
---@field public language string
---@field public avatar_url string
local account = {}
---@class CollectionObject
---@field public collection string
---@field public key string
---@field public user_id string
---@field public value table
---@field public version string
---@field public permission_read number
---@field public permission_write number
local collection_object = {}
---@class Context
---@field env table A table of key/value pairs which are defined in the YAML configuration of the server. This is useful to store API keys and other secrets which may be different between servers run in production and in development.
---@field execution_mode string The mode associated with the execution context. It's one of these values: "run_once", "rpc", "before", "after", "match", "matchmaker", "leaderboard_reset", "tournament_reset", "tournament_end".
---@field query_params table Query params that was passed through from HTTP request.
---@field session_id string The user session associated with the execution context.
---@field user_id string The user ID associated with the execution context.
---@field username string The username associated with the execution context.
---@field user_session_exp number The user session expiry in seconds associated with the execution context.
---@field client_ip string The IP address of the client making the request.
---@field client_port string The port number of the client making the request.
---@field match_id string The match ID that is currently being executed. Only applicable to server authoritative multiplayer.
---@field match_node string The node ID that the match is being executed on. Only applicable to server authoritative multiplayer.
---@field match_label string Labels associated with the match. Only applicable to server authoritative multiplayer.
---@field match_tick_rate number Tick rate defined for this match. Only applicable to server authoritative multiplayer.
local context = {}
---@class Presence
---@field user_id string
---@field session_id string
---@field username string
---@field node string
local presence = {}
---@class GameMessage
---@field sender Presence
---@field op_code number
---@field data string
local game_message = {}
---@class Dispatcher
local dispatcher = {}
---Send a message to one or more presences.
---This may be called at any point in the match loop to give match participants information about match state changes. May also be useful inside the match join callback to send initial state to the user on successful join.
---@param op_code number Numeric message op code.
---@param data string Data payload string, or nil.
---@param presences Presence[] List of presences (a subset of match participants) to use as message targets, or nil to send to the whole match.
---@param sender Presence A presence to tag on the message as the 'sender', or nil.
function dispatcher.broadcast_message(op_code, data, presences, sender)
end
---Removes participants from the match.
---Call at any point during the match loop to remove participants based on misbehaviour or other game-specific rules.
---@param presences Presence
function dispatcher.match_kick(presences)
end
---Sets a new label for the match.
---@param label string
function dispatcher.match_label_update(label)
end
---@class MessageNames
local message_names = {
---Add friends by ID or username to a user's account.
AddFriends = "AddFriends",
---Add users to a group.
AddGroupUsers = "AddGroupUsers",
---Authenticate a user with a custom id against the server.
AuthenticateCustom = "authenticate_custom",
---Authenticate a user with a device id against the server.
AuthenticateDevice = "AuthenticateDevice",
---Authenticate a user with an email+password against the server.
AuthenticateEmail = "AuthenticateEmail",
---Authenticate a user with a Facebook OAuth token against the server.
AuthenticateFacebook = "AuthenticateFacebook",
---Authenticate a user with Apple's GameCenter against the server.
AuthenticateGameCenter = "AuthenticateGameCenter",
---Authenticate a user with Google against the server.
AuthenticateGoogle = "AuthenticateGoogle",
---Authenticate a user with Steam against the server.
AuthenticateSteam = "AuthenticateSteam",
---Block one or more users by ID or username.
BlockFriends = "BlockFriends",
---Create a new group with the current user as the owner.
CreateGroup = "CreateGroup",
---Delete one or more users by ID or username.
DeleteFriends = "DeleteFriends",
---Delete one or more groups by ID.
DeleteGroup = "DeleteGroup",
---Delete a leaderboard record.
DeleteLeaderboardRecord = "DeleteLeaderboardRecord",
---Delete one or more notifications for the current user.
DeleteNotifications = "DeleteNotifications",
---Delete one or more objects by ID or username.
DeleteStorageObjects = "DeleteStorageObjects",
---Fetch the current user's account.
GetAccount = "GetAccount",
---Fetch zero or more users by ID and/or username.
GetUsers = "GetUsers",
---A healthcheck which load balancers can use to check the service.
Healthcheck = "Healthcheck",
---Import Facebook friends and add them to a user's account.
ImportFacebookFriends = "ImportFacebookFriends",
---Immediately join an open group, or request to join a closed one.
JoinGroup = "JoinGroup",
---Kick a set of users from a group.
KickGroupUsers = "KickGroupUsers",
---Leave a group the user is a member of.
LeaveGroup = "LeaveGroup",
---Add a custom ID to the social profiles on the current user's account.
LinkCustom = "LinkCustom",
---Add a device ID to the social profiles on the current user's account.
LinkDevice = "LinkDevice",
---Add an email+password to the social profiles on the current user's account.
LinkEmail = "LinkEmail",
---Add Facebook to the social profiles on the current user's account.
LinkFacebook = "LinkFacebook",
---Add Apple's GameCenter to the social profiles on the current user's account.
LinkGameCenter = "LinkGameCenter",
---Add Google to the social profiles on the current user's account.
LinkGoogle = "LinkGoogle",
---Add Steam to the social profiles on the current user's account.
LinkSteam = "LinkSteam",
---List a channel's message history.
ListChannelMessages = "ListChannelMessages",
---List all friends for the current user.
ListFriends = "ListFriends",
---List groups based on given filters.
ListGroups = "ListGroups",
---List all users that are part of a group.
ListGroupUsers = "ListGroupUsers",
---List leaderboard records.
ListLeaderboardRecords = "ListLeaderboardRecords",
---Fetch a list of running matches.
ListMatches = "ListMatches",
---Fetch a list of notifications.
ListNotifications = "ListNotifications",
---List publicly readable storage objects in a given collection.
ListStorageObjects = "ListStorageObjects",
---List groups the current user belongs to.
ListUserGroups = "ListUserGroups",
---Promote a set of users in a group to the next role up.
PromoteGroupUsers = "PromoteGroupUsers",
---Demote a set of users in a group to a lower role.
DemoteGroupUsers = "DemoteGroupUsers",
---Get storage objects.
ReadStorageObjects = "ReadStorageObjects",
---Remove the custom ID from the social profiles on the current user's account.
UnlinkCustom = "UnlinkCustom",
---Remove the device ID from the social profiles on the current user's account.
UnlinkDevice = "UnlinkDevice",
---Remove the email+password from the social profiles on the current user's account.
UnlinkEmail = "UnlinkEmail",
---Remove Facebook from the social profiles on the current user's account.
UnlinkFacebook = "UnlinkFacebook",
---Remove Apple's GameCenter from the social profiles on the current user's account.
UnlinkGameCenter = "UnlinkGameCenter",
---Remove Google from the social profiles on the current user's account.
UnlinkGoogle = "UnlinkGoogle",
---Remove Steam from the social profiles on the current user's account.
UnlinkSteam = "UnlinkSteam",
---Update fields in the current user's account.
UpdateAccount = "UpdateAccount",
---Update fields in a given group.
UpdateGroup = "UpdateGroup",
---Write a record to a leaderboard.
WriteLeaderboardRecord = "WriteLeaderboardRecord",
---Write objects into the storage engine.
WriteStorageObjects = "WriteStorageObjects",
---You should use the following message names for register_rt_before and register_rt_after hooks

---Join a realtime chat channel.
ChannelJoin = "ChannelJoin",
---Leave a realtime chat channel.
ChannelLeave = "ChannelLeave",
---Send a message to a realtime chat channel.
ChannelMessageSend = "ChannelMessageSend",
---Update a message previously sent to a realtime chat channel.
ChannelMessageUpdate = "ChannelMessageUpdate",
---Remove a message previously sent to a realtime chat channel.
ChannelMessageRemove = "ChannelMessageRemove",
---A client to server request to create a realtime match.
MatchCreate = "MatchCreate",
---A client to server request to send data to a realtime match.
MatchDataSend = "MatchDataSend",
---A client to server request to join a realtime match.
MatchJoin = "MatchJoin",
---A client to server request to leave a realtime match.
MatchLeave = "MatchLeave",
---Submit a new matchmaking process request.
MatchmakerAdd = "MatchmakerAdd",
---Cancel a matchmaking process using a ticket.
MatchmakerRemove = "MatchmakerRemove",
---Start following some set of users to receive their status updates.
StatusFollow = "StatusFollow",
---Stop following some set of users to no longer receive their status updates.
StatusUnfollow = "StatusUnfollow",
---Set the user’s own status.
StatusUpdate = "StatusUpdate"

}
---@module nakama
---@alias nk "nakama"
local nk = {}
---Accounts
---Delete an account by user ID.
---@param userId string User ID for the account to be deleted. Must be valid UUID.
---@param recorded boolean Whether to record this deletion in the database. By default this is set to false.
function nk.account_delete_id(userId, recorded)
end
---Export account information for a specified user ID.
---@param userId string User ID for the account to be exported. Must be valid UUID.
---@return string export Account information for the provided user ID, in JSON format.
function nk.account_export_id(userId)
end
---Get all account information for a given user ID.
---@param id string User ID to fetch information for. Must be valid UUID.
---@return table account All account information including wallet, device IDs and more.
function nk.account_get_id(id)
end
---@param user_id string User ID for which the information is to be updated. Must be valid UUID.
---@param metadata table Metadata to update. Use nil if it is not being updated.
---@param username string Username to be set. Must be unique. Use "" (Go) or nil (Lua) if it is not being updated.
---@param display_name string Display name to be updated. Use "" (Go) or nil (Lua) if it is not being updated.
---@param timezone string Timezone to be updated. Use "" (Go) or nil (Lua) if it is not being updated.
---@param location string Location to be updated. Use "" (Go) or nil (Lua) if it is not being updated.
---@param language string Lang tag to be updated. Use "" (Go) or nil (Lua) if it is not being updated.
---@param avatar_url string User's avatar URL. Use "" (Go) or nil (Lua) if it is not being updated.
function nk.account_update_id(user_id, metadata, username, display_name, timezone, location, language, avatar_url)
end
---Authenticate
---Authenticate user and create a session token using an Apple sign in token.
---@param token string Apple sign in token.
---@param username string The user's username. If left empty, one is generated.
---@param create boolean Create user if one didn't exist previously.
---@return string userID The user ID of the authenticated user.
---@return string username The username of the authenticated user.
---@return boolean created Value indicating if this account was just created or already existed.
function nk.authenticate_apple(token, username, create)
end
---Authenticate user and create a session token using a custom authentication managed by an external service or source not already supported by Nakama.
---@param id string Custom ID to use to authenticate the user. Must be between 6-128 characters.
---@param username string The user's username. If left empty, one is generated.
---@param create boolean Create user if one didn't exist previously.
---@return string userID The user ID of the authenticated user.
---@return string username The username of the authenticated user.
---@return boolean created Value indicating if this account was just created or already existed.
function nk.authenticate_custom(id, username, create)
end
---Authenticate user and create a session token using a device identifier.
---@param id string Device ID to use to authenticate the user. Must be between 1-128 characters.
---@param username string The user's username. If left empty, one is generated.
---@param create boolean Create user if one didn't exist previously.
---@return string userID The user ID of the authenticated user.
---@return string username The username of the authenticated user.
---@return boolean created Value indicating if this account was just created or already existed.
function nk.authenticate_device(id, username, create)
end
---Authenticate user and create a session token using an email address and password.
---@param email string Email address to use to authenticate the user. Must be between 10-255 characters.
---@param password string Password to set. Must be longer than 8 characters.
---@param username string The user's username. If left empty, one is generated.
---@param create boolean Create user if one didn't exist previously.
---@return string userID The user ID of the authenticated user.
---@return string username The username of the authenticated user.
---@return boolean created Value indicating if this account was just created or already existed.
function nk.authenticate_email(email, password, username, create)
end
---Authenticate user and create a session token using a Facebook account token.
---@param token string Access token.
---@param import boolean Whether to automatically import Facebook friends after authentication.
---@param username string The user's username. If left empty, one is generated.
---@param create boolean Create user if one didn't exist previously.
---@return string userID The user ID of the authenticated user.
---@return string username The username of the authenticated user.
---@return boolean created Value indicating if this account was just created or already existed.
function nk.authenticate_facebook(token, import, username, create)
end
---Authenticate user and create a session token using a Facebook Instant Game.
---@param playerInfo string Facebook Player info.
---@param username string The user's username. If left empty, one is generated.
---@param create boolean Create user if one didn't exist previously.
---@return string userID The user ID of the authenticated user.
---@return string username The username of the authenticated user.
---@return boolean created Value indicating if this account was just created or already existed.
function nk.authenticate_facebook_instance_game(playerInfo, username, create)
end
---Authenticate user and create a session token using Apple Game Center credentials.
---@param playerId string PlayerId provided by GameCenter.
---@param bundleId string BundleId of your app on iTunesConnect.
---@param timestamp number Timestamp at which Game Center authenticated the client and issued a signature.
---@param salt string A random string returned by Game Center authentication on client.
---@param signature string A signature returned by Game Center authentication on client.
---@param publicKeyUrl string A URL to the public key returned by Game Center authentication on client.
---@param username string The user's username. If left empty, one is generated.
---@param create boolean Create user if one didn't exist previously.
---@return string userID The user ID of the authenticated user.
---@return string username The username of the authenticated user.
---@return boolean created Value indicating if this account was just created or already existed.
function nk.authenticate_game_center(playerId, bundleId, timestamp, salt, signature, publicKeyUrl, username, create)
end
---Authenticate user and create a session token using a Google ID token.
---@param token string Google OAuth access token.
---@param username string The user's username. If left empty, one is generated.
---@param create boolean Create user if one didn't exist previously.
---@return string userID The user ID of the authenticated user.
---@return string username The username of the authenticated user.
---@return boolean created Value indicating if this account was just created or already existed.
function nk.authenticate_google(token, username, create)
end
---Authenticate user and create a session token using a Steam account token.
---@param token string Steam token.
---@param username string The user's username. If left empty, one is generated.
---@param import boolean Whether to automatically import Steam friends after authentication.
---@param create boolean Create user if one didn't exist previously.
---@return string userID The user ID of the authenticated user.
---@return string username The username of the authenticated user.
---@return boolean created Value indicating if this account was just created or already existed.
function nk.authenticate_steam(token, username, import, create)
end
---Generate a Nakama session token from a user ID.
---@param userId string User ID to use to generate the token.
---@param username string The user's username. If left empty, one is generated.
---@param expiresAt number Number of seconds the token should be valid for. Defaults to server configured expiry time.
---@return string token The Nakama session token.
---@return number validity The period for which the token remains valid.
function nk.authenticate_token_generate(userId, username, expiresAt)
end
---Link Apple authentication to a user ID.
---@param userId string The user ID to be linked.
---@param token string Apple sign in token.
function nk.link_apple(userId, token)
end
---Link custom authentication to a user ID.
---@param userId string The user ID to be linked.
---@param customId string Custom ID to be linked to the user.
function nk.link_custom(userId, customId)
end
---Link device authentication to a user ID.
---@param userId string The user ID to be linked.
---@param deviceId string Device ID to be linked to the user.
function nk.link_device(userId, deviceId)
end
---Link email authentication to a user ID.
---@param userId string The user ID to be linked.
---@param email string Authentication email to be linked to the user.
---@param password string Password to set. Must be longer than 8 characters.
function nk.link_email(userId, email, password)
end
---Link Facebook authentication to a user ID.
---@param userId string The user ID to be linked.
---@param username string If left empty, one is generated.
---@param token string Access token.
---@param importFriends boolean	Whether to automatically import Facebook friends after authentication.
function nk.link_facebook(userId, username, token, importFriends)
end
---Link Facebook Instant Game authentication to a user ID.
---@param userId string The user ID to be linked.
---@param playerInfo string Facebook player info.
function nk.link_facebook_instant_game(userId, playerInfo)
end
---Link Apple Game Center authentication to a user ID.
---@param userId string The user ID to be linked.
---@param playerId string Player ID provided by Game Center.
---@param bundleId string Bundle ID of your app on iTunesConnect.
---@param timestamp number Timestamp at which Game Center authenticated the client and issued a signature.
---@param salt string A random string returned by Game Center authentication on client.
---@param signature string A signature returned by Game Center authentication on client.
---@param publicKeyUrl string A URL to the public key returned by Game Center authentication on client.
function nk.link_gamecenter(userId, playerId, bundleId, timestamp, salt, signature, publicKeyUrl)
end
---Link Google authentication to a user ID.
---@param userId string The user ID to be linked.
---@param token string Google OAuth access token.
function nk.link_google(userId, token)
end
---Link Steam authentication to a user ID.
---@param userId string The user ID to be linked.
---@param username string If left empty, one is generated.
---@param token string Steam access token.
---@param importFriends boolean Whether to automatically import Steam friends after authentication.
function nk.link_steam(userId, username, token, importFriends)
end
---Unlink Apple authentication from a user ID.
---@param userId string The user ID to be unlinked.
---@param token string Apple sign in token.
function nk.unlink_apple(userId, token)
end
---Unlink custom authentication from a user ID.
---@param userId string The user ID to be unlinked.
---@param customId string Custom ID to be unlinked from the user.
function nk.unlink_custom(userId, customId)
end
---Unlink device authentication from a user ID.
---@param userId string The user ID to be unlinked.
---@param deviceId string Device ID to be unlinked to the user.
function nk.unlink_device(userId, deviceId)
end
---Unlink email authentication from a user ID.
---@param userId string The user ID to be unlinked.
---@param email string Email to be unlinked from the user.
function nk.unlink_email(userId, email)
end
---Unlink Facebook authentication from a user ID.
---@param userId string The user ID to be unlinked.
---@param token string Access token.
function nk.unlink_facebook(userId, token)
end
---Unlink Facebook Instant Game authentication from a user ID.
---@param userId string The user ID to be unlinked.
---@param playerInfo string Facebook player info.
function nk.unlink_facebook_instant_game(userId, playerInfo)
end
---Unlink Apple Game Center authentication from a user ID.
---@param userId string The user ID to be unlinked.
---@param playerId string Player ID provided by Game Center.
---@param bundleId string Bundle ID of your app on iTunesConnect.
---@param timestamp number Timestamp at which Game Center authenticated the client and issued a signature.
---@param salt string A random string returned by Game Center authentication on client.
---@param signature string A signature returned by Game Center authentication on client.
---@param publicKeyUrl string A URL to the public key returned by Game Center authentication on client.
function nk.unlink_game_center(userId, playerId, bundleId, timestamp, salt, signature, publicKeyUrl)
end
---Unlink Google authentication from a user ID.
---@param userId string The user ID to be unlinked.
---@param token string Google OAuth access token.
function nk.unlink_google(userId, token)
end
---Unlink Steam authentication from a user ID.
---@param userId string The user ID to be unlinked.
---@param token string Steam access token.
function nk.unlink_steam(userId, token)
end
---Chat
---Create a channel identifier to be used in other runtime calls. Does not create a channel.
---@param senderId string UserID of the message sender (when applicable). An empty string defaults to the system user.
---@param target string Can be the room name, group identifier, or another username.
---@param chanType number The type of channel, for example group or direct.
---@return string channelId The generated ID representing a channel.
function nk.channel_id_build(senderId, target, chanType)
end
---Send a message on a realtime chat channel.
---@param channelId string The ID of the channel to send the message on.
---@param content table Message content.
---@param senderId string The UUID for the sender of this message. If left empty, it will be assumed that it is a system message.
---@param senderUsername string The username of the user to send this message as. If left empty, it will be assumed that it is a system message.
---@param persist boolean Whether to record this message in the channel history.
---@return table ack Message sent ack.
function nk.channel_message_send(channelId, content, senderId, senderUsername, persist)
end
---Update a message on a realtime chat channel.
---@param channelId string The ID of the channel to send the message on.
---@param messageId string The ID of the message to update.
---@param content table Message content. Must be set.
---@param senderId string The UUID for the sender of this message. If left empty, it will be assumed that it is a system message.
---@param senderUsername string The username of the user to send this message as. If left empty, it will be assumed that it is a system message.
---@param persist boolean Whether to record this message in the channel history.
---@return table ack Message updated ack.
function nk.channel_message_update(channelId, messageId, content, senderId, senderUsername, persist)
end
---Events
---Generate an event.
---@param name string The name of the event to be created.
---@param properties table A table of event properties.
---@param timestamp number Numeric UTC value of when event is created.
---@param external boolean Whether the event is external.
function nk.event(name, properties, timestamp, external)
end
---Friends
---Add friends to a user.
---@param userId string The ID of the user to whom you want to add friends.
---@param username string The name of the user to whom you want to add friends.
---@param ids table The IDs of the users you want to add as friends.
---@param usernames table The usernames of the users you want to add as friends.
function nk.friendsAdd(userId, username, ids, usernames)
end
---Delete friends to a user.
---@param userId string The ID of the user from whom you want to delete friends.
---@param username string The name of the user from whom you want to delete friends.
---@param ids table The IDs of the users you want to delete as friends.
---@param usernames table The usernames of the users you want to delete as friends.
function nk.friendsDelete(userId, username, ids, usernames)
end
---List all friends, invites, invited, and blocked which belong to a user.
---@param userId string The ID of the user whose friends, invites, invited, and blocked you want to list.
---@param limit number The number of friends to retrieve in this page of results. No more than 100 limit allowed per result.
---@param state number The state of the friendship with the user. If unspecified this returns friends in all states for the user.
---@param cursor string The cursor returned from a previous listing request. Used to obtain the next page of results.
---@return table fields The user information for users that are friends of the current user.
---@return string cursor An optional next page cursor that can be used to retrieve the next page of records (if any).
function nk.friends_list(userId, limit, state, cursor)
end
---Groups
---Setup a group with various configuration settings. The group will be created if they don't exist or fail if the group name is taken.
---@param userId string Mandatory. The user ID to be associated as the group superadmin.
---@param name string Mandatory. Group name, must be unique.
---@param creatorId string The user ID to be associated as creator. If not set or nil/null, system user will be set.
---@param langTag string Group language.
---@param description string Group description, can be left empty as nil/null.
---@param avatarUrl string URL to the group avatar, can be left empty as nil/null.
---@param open boolean Whether the group is for anyone to join, or members will need to send invitations to join.
---@param metadata table Custom information to store for this group. Can be left empty as nil/null.
---@param maxCount number Maximum number of members to have in the group.
---@return string createGroup The ID of the newly created group.
function nk.group_create(userId, name, creatorId, langTag, description, avatarUrl, open, metadata, maxCount)
end
---Delete a group.
---@param groupId string The ID of the group to delete.
function nk.group_delete(groupId)
end
---Fetch one or more groups by their ID.
---@param groupIds table A list of strings of the IDs for the groups to get.
---@return table getGroups A table of groups with their fields.
function nk.groups_get_id(groupIds)
end
---Find groups based on the entered criteria.
---@param name string Search for groups that contain this value in their name.
---@param langTag string Filter based upon the entered language tag.
---@param members number Search by number of group members.
---@param open boolean Filter based on whether groups are Open or Closed.
---@param limit number Return only the required number of groups denoted by this limit value.
---@param cursor string Cursor to paginate to the next result set. If this is empty/null there are no further results.
---@return table groups A list of groups.
---@return string cursor An optional next page cursor that can be used to retrieve the next page of records (if any).
function nk.groups_list(name, langTag, members, open, limit, cursor)
end
---Update a group with various configuration settings. The group which is updated can change some or all of its fields.
---@param groupId string The ID of the group to update.
---@param userId string User ID calling the update operation for permission checking. Set as nil to enact the changes as the system user.
---@param name string Group name, can be empty if not changed.
---@param creatorId string The user ID to be associated as creator. Can be empty if not changed.
---@param langTag string Group language. Empty if not updated.
---@param description string Group description, can be left empty if not updated.
---@param avatarUrl string URL to the group avatar, can be left empty if not updated.
---@param open boolean Whether the group is for anyone to join or not.
---@param metadata table Custom information to store for this group. Use nil if field is not being updated.
---@param maxCount number Maximum number of members to have in the group. Use 0, nil/null if field is not being updated.
function nk.group_update(groupId, userId, name, creatorId, langTag, description, avatarUrl, open, metadata, maxCount)
end
---Join a group for a particular user.
---@param groupId string The ID of the group to join.
---@param userId string The user ID to add to this group.
---@param username string The username of the user to add to this group.
function nk.group_user_join(groupId, userId, username)
end
---Leave a group for a particular user.
---@param groupId string The ID of the group to join.
---@param userId string The user ID to add to this group.
---@param username string The username of the user to add to this group.
function nk.group_user_leave(groupId, userId, username)
end
---Add users to a group.
---@param groupId string The ID of the group to add users to.
---@param userIds table Table of user IDs to add to this group.
function nk.group_users_add(groupId, userIds)
end
---Ban users from a group.
---@param groupId string The ID of the group to add users to.
---@param userIds table Table of user IDs to add to this group.
function nk.group_users_ban(groupId, userIds)
end
---Demote users in a group.
---@param groupId string The ID of the group whose members are being demoted.
---@param userIds table Table of user IDs to demote.
function nk.group_users_demote(groupId, userIds)
end
---Kick users from a group.
---@param groupId string The ID of the group to kick users from.
---@param userIds table Table of user IDs to kick.
function nk.group_users_kick(groupId, userIds)
end
---List all members, admins and superadmins which belong to a group. This also list incoming join requests.
---@param groupId string The ID of the group to list members for.
---@return table groupUsers The user information for members, admins and superadmins for the group. Also users who sent a join request.
function nk.group_users_list(groupId)
end
---Promote users in a group.
---@param groupId string The ID of the group whose members are being promoted.
---@param userIds table Table of user IDs to promote.
function nk.group_users_promote(groupId, userIds)
end
---List all groups which a user belongs to and whether they've been accepted or if it's an invite.
---@param userId string The ID of the user to list groups for.
---@return table userGroups A table of groups with their fields.
---@return string cursor An optional next page cursor that can be used to retrieve the next page of records (if any).
function nk.user_groups_list(userId)
end
---Hooks`

It works well on my side, please check your server version and provide your log.

Seems to be an issue on EmmyLua's end of things, sorry for the false report. Close this please. If you happen to know how the ---@module content syntax is, Ill be glad to get a bit of help, since theres no documentation on that on any side of emmy lua git page or other sites I checked.

Seems to be an issue on EmmyLua's end of things, sorry for the false report. Close this please. If you happen to know how the ---@module content syntax is, Ill be glad to get a bit of help, since theres no documentation on that on any side of emmy lua git page or other sites I checked.

My implementation is not completely consistent with the original EmmyLua.
You can find the description of my implementation version here: https://github.com/sumneko/lua-language-server/wiki/EmmyLua-Annotations

Yeah, checked it, seems to be that, I use EmmyLua for the added intelisense functionality and completion suggestions.
For the time being I removed the module declaration entirely. Could be possible to add support for both EmmyLua style and yours as well?

You mean the module syntax of lua 5.1? There are currently no plans to add support.

Sorrows and sadness. Thx btw for this incredible tool!

Sorry to bother again, do your tool have a full documentation on all its features?
Im wanting to ignore an error on a specific line, but luacheck seems to not be working as expected?

See https://github.com/sumneko/lua-language-server/wiki/EmmyLua-Annotations#diagnostic

From what I see there seems to not be a disable that works for this error
PARSER_LUADOC_MISS_MODULE_NAME Lua Syntax Check.(luadoc-miss-module-name)
Is it possible to add new flags to it?

It seems that diagnostic errors starting with luadoc- cannot be disabled, from what I can see. Not sure if this is intended or not.


Does not work anymore google inserts ^C

Google Colab is inserting ^C few seconds after starting the render causing the cell to quit.

Works fine for me on a small test file.
The ^C indicates that the abort command( CTRL+C) was passed to the program. From here on I will have to guess: did you try a small test file? Do you exceed RAM or something else? Did you run blender with the -d debug flag? Are there any more indicators on what is happening before?

Works fine for me on a small test file.
The ^C indicates that the abort command( CTRL+C) was passed to the program. From here on I will have to guess: did you try a small test file? Do you exceed RAM or something else? Did you run blender with the -d debug flag? Are there any more indicators on what is happening before?

Do you exceed RAM or something else? Did you run blender with the -d debug flag? Are there any more indicators on what is happening before?

I am using High Ram instance with 25.6GB on Colab Pro and 16GB V100. Is there a way to see GPU memory usage when running the blender cell?
I tried the box and it rendered but something with files more than a few hundred megs seem to crash it only on Colab.

Do you exceed RAM or something else? Did you run blender with the -d debug flag? Are there any more indicators on what is happening before?

I am using High Ram instance with 25.6GB on Colab Pro and 16GB V100. Is there a way to see GPU memory usage when running the blender cell?
I tried the box and it rendered but something with files more than a few hundred megs seem to crash it only on Colab.

Did some testing and its running out of memory and crashes. 25GB is not enough with CPU disabled. Is there a way to force a limit on Blender Colab, use Swap or something else?

Did some testing and its running out of memory and crashes. 25GB is not enough with CPU disabled. Is there a way to force a limit on Blender Colab, use Swap or something else?

@bachmannn
If your scene needs more than 16GB VRAM + 25GB RAM combined you definitely need to optimise your scene...

I am not that much of a system guy to know if there is a way to expand the memory with a swap in that way. It would come at an absurd performance penalty for sure and is probably not worth it. VRAM swapping to RAM is already extremly more slow


Workspace Switch Animation

Hi folks,
First, thank you guys very much for making this awesome software which brings me back to my favourite macOS, from struggling with Linux GUI.
The reason why I open this issue is that I am wondering if there is anyway we can enable the native macOS workspace switching animation (demo video found on reddit).
Any idea is appreciated. Thanks.

I'm guessing you mean for the space --focus command?
There's a few ways you can make the animation work:

Focus a window rather than the space, ie. yabai -m window --focus (yabai -m query --windows |jq '.[] | select (.app  | contains("Rider")) | .id');
Use sytem-level shortcuts for switching space instead of yabai (if you have one-to-one mapping of hotkeys):

This is one of the primary reasons why I use yabai. You just need to remap the keys with yabai commands.

Oh hey, thanks very much @peppy. Switching to window instead of workspace is a brilliant idea.