Review textContains with html new lines

textContains behavior changed unexpectedly, now it requires taking into account generated html newlines. Review this behaviourand implement test cases to check if it is a wanted behavior

I was looking for this 👍
I've been playing a bit feel a bit frustrated, let me explain:
If you do any selection (querySelectorAll) and want to get innerText, break lines are added when that html selection contains several HTML elements which is what browser.assert.text() should do IMHO, but with textContent & browser.assert.textContains() break lines shouldn't be added, check the following example:

I've very quickly the code (and could be wrong), but seems like textContains uses text under the hood.
PS: Happy New Year :P

Same applies when using text-transfrom
innerText -> what we see rendered
textContent -> what is written

So, as I understand, the only method behaving unexpectedly for you is browser.assert.textContains which should not add new lines right? @ZiFFeL1992

Wouldn't it be inconsistent if textContains ignore newlines while text doesn't?

Nope, they we'll work like native API does as you can see in the image attached, the only thing is naming, could be confusing that they behave different, I would add it to docs, but it was something I didn't know until today, I don't know if people use to know that both exist... To keep consistency with native API maybe textContent is more accurate...

Keep in mind that textContent is not the same as textContains
Regardless of native API, the original idea of text/textContains is the following:

Text checks the same exact string
TextContains accepts any substring (so, "david" is contained in "david hasselhoff")

https://stackoverflow.com/questions/35213147/difference-between-textcontent-vs-innertext provides a nice explanation for the native API where (as far as I understand) the key difference relies on whether only visible text or also extra elements (e.g.  as newlines) are returned. Currently, this last option is what is used across wendigo afaik. I'm not sure if that is the correct option, but I feel the same should be used on all places unless a clear naming is given for all these different options (I agree if a new method is added, matching the native naming, the same behavior should be expected)
So I see 2 issues here:

Is adding newlines the correct behavior for text assertions?
Is it worth it adding new methods/options to expose both options (textContent/innerText)?

Not sure if there are more things to consider. Thoughts @ZiFFeL1992 ?

The question for me is why would you assert with break lines? They'll be added and it's harder to make assertions IMHO, why did you decide to do that change, maybe some background would help...
If you want to keep it like that I would add a modifier for both text/textContains to work with textContent/innerText, I feel like adding another two assertions will made usage harder.

The change in assertions is a side effect of modifying browser.text which returns newlines (as it should). I'm happy to change the behavior of the assertions, but it should be modified for both IMO (so, both assert.text and assert.textContains ignore newlines) would that make sense?)

Why would assertions and browser.text work different? I can imagine that you have a long paragraph and you want to break line manually for whatever reason, in that case a break line in browser.text "would" make sense, but are there any other cases where you'd like to take into account line breaks?
But I'm agree, both assertions should work with textContent.

Essentially, I think getting a text should return the most accurate depiction of the text (preferably, with newlines). For consistency, assertions work the same way.
However, I see why assertions may be messy when taking parsed newlines into account, so it makes sense to change their behavior

I'm agree with that, but check the following example:
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <p class="p1">
        Lorem ipsum dolor, sit amet consectetur adipisicing elit.  Quisquam impedit repellendus ipsum excepturi praesentium deleniti quidem illum voluptates vero sapiente blanditiis eligendi id, quas voluptatum eveniet dignissimos aspernatur repellat quis?
    </p>
</body>

</html>

innerText cuts the text while textContent will get everything, am I missing anything?
Is fine if browser.text only takes into account br elements, but it doesn't work like that as far as I know (have tested).

Great example, could you give me the same example but using wendigo text + assert.text to make sure what the expected vs actual behavior are? It's getting slightly confusing talking in terms of native inner and content, I think I'll understand better that way
Thanks

There you go:
wendigo-text.zip
There's something I can't understand, why selector.textContent returns the whole text inside a selector (ignoring child elements) in my browser but it doesn't in puppeteer (check test text with html elements)
IMHO that test should work as it is right L28 in main.test.js, but evaluate doesn't return what I expect even using document.querySelector, and should work on L29 after fixing what we have discussed, let me know if I can help :)

Hi @ZiFFeL1992 I've integrated those 2 tests as are, the result I get is as you say:
-Lorem ipsum dolor sit,
+Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad quisquam ex ut in quae dolore minima nulla corporis molestiae porro, voluptatum explicabo neque consequuntur eos? Itaque doloribus voluptate sapiente dicta.

However, running the same commands in my browser (Chrome) I get consistent results with the test:

Then is an issue with puppeteer it self?

erm, I don't think so, as I show in the screenshot, the behavior is the same in chrome. What browser are you using?

New test cases added to cover this behavior, branch fix-text-with-newlines will be used for development of this in case you want to review the changes/contribute @ZiFFeL1992

Can you open the PR, so I can take a look? :)

It is not fixed yet, only the tests are on that branch (yay, TDD) a diff with dev should give you the details, I'll open the PR once this issue is fixed and ready to merge to dev

diff --git a/tests/dummy_server/static/lorem.html b/tests/dummy_server/static/lorem.html
index 3159343..1bfd3f2 100644
--- a/tests/dummy_server/static/lorem.html
+++ b/tests/dummy_server/static/lorem.html
@@ -3,9 +3,7 @@

 <head>
     <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta http-equiv="X-UA-Compatible" content="ie=edge">
-    <title>Document</title>
+    <title>Text / Assert Text</title>
 </head>

 <body>

I'd also change file name, everything else looks good to me :)

Doesn't really affect tests, name is only to identify uniquely among all the .html files for testing. Feel free to make a PR with these changes (target branch being fix-text-with-newlines)


S3 ObjectVersion different behavior in moto

I'm using this code to recover deleted objects from AWS :
s3 = boto3.resource('s3')
bucket = s3.Bucket(bucket)
versions = bucket.object_versions

...

def is_delete_marker(version):
    try:
        # note head() is faster than get()
        version.head()
        return False
    except botocore.exceptions.ClientError as e:
        if 'x-amz-delete-marker' in e.response['ResponseMetadata']['HTTPHeaders']:
            return True
        # an older version of the key but not a DeleteMarker
        elif '404' == e.response['Error']['Code']:
            return False

def recover(versions, key, logger):
    for version in versions.filter(Prefix=key):
        if is_delete_marker(version):
            logger.info(f'version {version.key} {version.last_modified} recovered')
            version.delete()

I noticed that this code behaves differently when using moto, especially the x-amz-delete-marker isn't preset in HTTPHeaders. I didn't find a specific documentation for that but i think moto should behave the same.

Hi @bmaisonn, can you share a minimal reproducible example?
What version of Moto are you using?

I couldn't reproduce this based on the provided code snippet - or more specifically, I could not figure out why/when AWS returns this x-amz-delete-marker-header. Closing this - if you do have something reproducible I'd be happy to have another look.

Sorry for the late answer on this @bblommers if you run this code on a bucket with versioning enabled you'll get the following output

In this i just create an object on s3, delete an try to remove the delete marker from the versions when there's one.
import moto
import io
import boto3
import botocore

BUCKET_NAME = 'XXX'
KEY = 'test_delete_marker.txt'

s3 = boto3.resource("s3", region_name="us-east-1")
s3_client = boto3.client('s3')

with io.BytesIO() as f:
    f.write(b'test')
    s3_client.put_object(Bucket=BUCKET_NAME, Key=KEY,Body=f)

s3_client.delete_object(Bucket=BUCKET_NAME, Key=KEY)

s3 = boto3.resource('s3')
bucket = s3.Bucket(BUCKET_NAME)
versions = bucket.object_versions

def is_delete_marker(version):
    try:
        # note head() is faster than get()
        version.head()
        return False
    except botocore.exceptions.ClientError as e:
        if 'x-amz-delete-marker' in e.response['ResponseMetadata']['HTTPHeaders']:
            return True
        # an older version of the key but not a DeleteMarker
        elif '404' == e.response['Error']['Code']:
            return False

def recover(versions, key):
    for version in versions.filter(Prefix=key):
        if is_delete_marker(version):
            print(f'version {version.key} {version.last_modified} recovered')
            version.delete()

recover(versions, KEY)

If i run the same with moto i don't see any output here even if i see some version listed for that key
import moto
import io
import boto3
import botocore

#BUCKET_NAME = 'test'
BUCKET_NAME = 'XXX'
KEY = 'test_delete_marker.txt'

with moto.mock_s3():
    s3 = boto3.resource("s3", region_name="us-east-1")
    s3_client = boto3.client('s3')

    s3.create_bucket(Bucket=BUCKET_NAME)
    s3_client.put_bucket_versioning(Bucket=BUCKET_NAME, VersioningConfiguration={'Status': 'Enabled'})

    with io.BytesIO() as f:
        f.write(b'test')
        s3_client.put_object(Bucket=BUCKET_NAME, Key=KEY,Body=f)

    s3_client.delete_object(Bucket=BUCKET_NAME, Key=KEY)

    s3 = boto3.resource('s3')
    bucket = s3.Bucket(BUCKET_NAME)
    versions = bucket.object_versions

    def is_delete_marker(version):
        try:
            # note head() is faster than get()
            version.head()
            return False
        except botocore.exceptions.ClientError as e:
            if 'x-amz-delete-marker' in e.response['ResponseMetadata']['HTTPHeaders']:
                return True
            # an older version of the key but not a DeleteMarker
            elif '404' == e.response['Error']['Code']:
                return False

    def recover(versions, key):
        for version in versions.filter(Prefix=key):
            if is_delete_marker(version):
                print(f'version {version.key} {version.last_modified} recovered')
                version.delete()

    recover(versions, KEY)

Ah, gotcha. Not sure what I did wrong initially - but I can reproduce now. Looks like Moto returns a generic 404 when trying to call head() on a DeleteMarker, instead of a 405.

@bblommers - i'm not sure the fix for this is correct.
TLDR: In the case of an object having a delete marker - If you don't provide an object version, then a 404 error is the correct response. 405 should only be returned if you specify the version ID.
In my case this means that moto S3 throws a different error to that produced by the real S3.
I think this fix needs to be reverted / further work required.
Reference
The S3 documentation specifies:

When you get an object without specifying a versionId in your request, if its current version is a delete marker, Amazon S3 responds with the following:
A 404 (Not Found) error
A response header, x-amz-delete-marker: true
When you get an object by specifying a versionId in your request, if the specified version is a delete marker, Amazon S3 responds with the following:
A 405 (Method Not Allowed) error
A response header, x-amz-delete-marker: true
A response header, Last-Modified: timestamp (only when using the HeadObject or GetObject API operations)

Link: Delete Marker User Guide

Appreciate the correction @jagoodhand! I've raised a PR with a fix.


EPUB & HTML command with individual functions

Created individual functions for the EPUB and HTML generation and changed to code in those to generate the EPUB and HTML file respectively.
Can't test any of the three commands at the moment due to an issue:
✖ enhancement is not a function
(node:28178) UnhandledPromiseRejectionWarning: TypeError: enhancement is not a function
at forEach.enhancement (.../percollate/index.js:44:3)
You must be working on the repo since I didn't touch that code. Also PDF function is untouched and should have otherwise worked. Anyways, I hope this was the approach you had in mind. 😄

Closing in favor of https://github.com/danburzo/percollate/pull/98


check-eve: test for duplicate json keys - v2

Add a duplicate key check to check-eve. If a duplicate key is found
in a JSON record, the test will fail with a schema error.
Previous PR: https://github.com/OISF/suricata-verify/pull/1083
Changes from previous PR:

Run with every test along with schema validation.

I like this

Example failure: https://github.com/OISF/suricata/actions/runs/7402471425/job/20140439927#step:19:85

Merged in #1572, thanks!


Do not use join_all in 1Inch price estimator

The estimates functions is meant to allow more efficient estimating
when the estimator can evalute several queries together as is the case
for the baseline estimator.
For the external estimators whose api only allows single estimates at a
time there is no such efficiency gain. The 1inch estimator was
nonetheless doing all price estimation calls in parallel. This is
problematic when there are a large amount of queries as it would likely
look like a DOS to their backend.
For now I decided to ensure that all of the external estimators work the same way.
In the future we could decide to allow some fixed level of
parallelness like max 3 requests at the same time.
Related to https://github.com/gnosis/gp-v2-services/pull/1619

Codecov Report

Merging #1620 (5a8156a) into main (47e251b) will increase coverage by 0.00%.
The diff coverage is 0.00%.

@@           Coverage Diff           @@
##             main    #1620   +/-   ##
=======================================
  Coverage   66.62%   66.62%
=======================================
  Files         172      172
  Lines       33752    33750    -2
=======================================
+ Hits        22486    22487    +1
+ Misses      11266    11263    -3


Can't build with latest godot git version...

I'm getting this error:
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o src/godot_openhmd.os -c -DOHMD_STATIC -DDRIVER_OCULUS_RIFT -DDRIVER_DEEPOON -DDRIVER_HTC_VIVE -DDRIVER_PSVR -DDRIVER_NOLO -fPIC -g -O3 -std=c++14 -fPIC -DOHMD_STATIC -Ilibusb -Ilibusb/libusb -Ilibusb/libusb/os -Ihidapi/hidapi -Iopenhmd/include -I. -I/RAID/atomo/home/rhradec/dev/godot.git/modules/gdnative/include -Iglad src/godot_openhmd.c
cc1: warning: command line option '-std=c++14' is valid for C++/ObjC++ but not for C
src/godot_openhmd.c: In function 'get_openhmd_data':
src/godot_openhmd.c:47:21: error: 'godot_gdnative_api_struct {aka const struct godot_gdnative_api_struct}' has no member named 'godot_alloc'
   openhmd_data = api->godot_alloc(sizeof(openhmd_data_struct));
                     ^~
src/godot_openhmd.c: In function 'release_openhmd_data':
src/godot_openhmd.c:75:7: error: 'godot_gdnative_api_struct {aka const struct godot_gdnative_api_struct}' has no member named 'godot_free'
    api->godot_free(openhmd_data);

examining the godot headers, the godot_alloc() is indeed defined there... so not sure what's going on!
I'll keep digging, but any help would be greatly appreciated!
cheers...

One thing that is very important and possibly the cause of your particular issue is that the headers in the godot_header repo are outdated. They will hopefully be updated soon now that Godot 3 has gone into feature freeze. Assuming you are building Godot 3 from source as well you can set an environment variable to point to \modules\gdnative\include
Other then that the tres file needs to be replaced by a gdnlib file that is structured differently, I've done this for the openvr repo already though I'm still having some issues with it crashing on the objects it exposes. Hope to have that fixed sometime this week.

Yep, I'm building from godot 3.0.
Actually, this error is happening after I've updated the godot_headers_path to the proper include path of my godot 3.0 folder, in the SConstruct file, like this:
godot_headers_path = ARGUMENTS.get("headers", "../godot.git/modules/gdnative/include")

So, it seens it's not only that.
I was able to get it to compile further by adding this to the ./src/godot_openhmd.c file:
#define godot_gdnative_api_struct godot_gdnative_core_api_struct

since it seens the godot_gdnative_core_api_struct is the one that holds godot_alloc and others.
but then I got more errors:
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o src/godot_openhmd.os -c -DOHMD_STATIC -DDRIVER_OCULUS_RIFT -DDRIVER_DEEPOON -DDRIVER_HTC_VIVE -DDRIVER_PSVR -DDRIVER_NOLO -fPIC -g -O3 -std=c++14 -fPIC -DOHMD_STATIC -Ilibusb -Ilibusb/libusb -Ilibusb/libusb/os -Ihidapi/hidapi -Iopenhmd/include -I. -I/RAID/atomo/home/rhradec/dev/godot.git/modules/gdnative/include -Iglad src/godot_openhmd.c
cc1: warning: command line option '-std=c++14' is valid for C++/ObjC++ but not for C
src/godot_openhmd.c: In function 'openhmd_close_controller_device':
src/godot_openhmd.c:216:8: error: 'godot_gdnative_core_api_struct {aka const struct godot_gdnative_core_api_struct}' has no member named 'godot_arvr_remove_controller'; did you mean 'godot_color_contrasted'?
   api->godot_arvr_remove_controller(openhmd_data->controller_tracker_mapping[p_index].tracker);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
        godot_color_contrasted

and it seems the godot_arvr_remove_controller is not in the godot_gdnative_core_api_struct... so I would guess that godot 3.0 has splitted the functionality into 2 or more structures?
I'll keep digging (as time permits), since I can't wait to get my DK1 to work in godot 3.0!
If you have any more pointers to share, maybe I can get this working for you! ;)
anyhow, thanks loads for this driver anyway!! really cool!!!
cheers...
-H

Yes a number of things were renamed very recently.
Have a look at the most recent changes to godot_openvr:
https://github.com/BastiaanOlij/godot_openvr/blob/render_components/src/godot_openvr.cpp
You'll see the API struct has been broken up into 3 parts which now need to be initialised.
I changed the prefix here to see if that fixed an issue I was dealing with, you actually set this prefix in the new gdnlib file:
https://github.com/BastiaanOlij/godot_openvr/blob/render_components/demo/bin/godot_openvr.gdnlib
It can stay godot_ or we can also rename it for openhmd.
The godot_openhmd.tres file needs to be similarly changed to a gdnlib file with that new layout.
I need to find time to do the final refactoring changes to the openvr implementation so I know what I still need to change and retrofit the same changes here and to the reference implementation. But yeah if you have some time that be good. There are more changes then this, Karroffel and Endragor have been doing a lot of changes to make GDNative libraries deployable on iOS and android

See PR #2, that should fix the issues. I haven't tested it other then checking if it'll run.


Fix for Python3 - ‘/’ -> '//'

Only replaced in file ecpy/utils/root.py.
With $grep -nr ' / ' ./, there are lot of '/', to be check if works under Python 3.

What is differences of #9 between #8?
I think we doesn't need to fix / to // because ecpy's field / ring classes having floordiv and truediv. ecpy's code has assumed to using that.
Moreover, even if we didn't fix that, ecpy has passed all test at Python 3 enviroment.

What is differences of #9 between #8?
I think we doesn't need to fix / to // because ecpy's field / ring classes having floordiv and truediv. ecpy's code has assumed to using that.
Moreover, even if we didn't fix that, ecpy has passed all test at Python 3 enviroment.

No different, you can delete the request #8.
In my case, there is a warning for the result which may not be a int. So '//' just force the result into an int.

@n00d1e5 In current configuration, Travis CI checks test using Python 3.5.x. so an error occurred for using try import syntax.
Moreover, I (still) use ecpy at Python 2.x sometimes and I wanna use common codes. so I can't merge this breaking change (but I'll fix testing environment version).


Make the page mobile friendly

Currently the page does not look too good on mobile devices. Therefore we need to redesign the page. Especailly the page where data can be uploaded from mobile devices

Also tweak UI so it looks a bit nicer.

Also improve the user experience

Allow enter to "click" save in modals / registration page / login
Make Cancel / Save Buttons consistent across the page (Save button on the right / cancel on the left)

Card design needs to be unique across the page

Mobile recording page:

Add cards with sensorName, sampleRate and components
Make record button floating so its always visible

[ ] When recording data on the mobile page, first check for sensors and then show the sensors available in the sensor-selection-table


How do I check if a name exists

props := actor.PropsFromProducer(func() actor.Actor { return &HelloActor{} })

_, err := rootContext.SpawnNamed(props, "hello")

pid := actor.NewLocalPID("test")
// I want to deal with it when the pid doesn't exist
// Or check to see if the actor name exists
rootContext.Send(pid, Hello{Who: "Hi"})

Is there a suitable API??

I think you can use the process registry for that:
_, ok := actor.ProcessRegistry.Get(pid)

That suggestion works. Thanks @ccamel !


Axum error[E0277]: the trait bound fn() -> impl Future<Output = PreEscaped<String>> {a}: Handler<_, _> is not satisfied

For some reason I can't make it work with axum version 0.4. I have followed the instructions provided in the framework integrations section, but it still doesn't work.
Dependencies in Cargo.toml are as follows.
[dependencies]
axum = { version="0.4"}
maud = { version="*", features = ["axum"]}
tokio = { version="1.0", features = ["full"]}

Nothing special in code, just a starter hello world example.
use axum::{routing::get, Router};
use maud::{html, Markup};

async fn hello_world() -> &'static str {
    "hello"
}

async fn a() -> Markup {
    html! {
        h1 { "Hello, World!" }
    }
}

#[tokio::main]
async fn main() {
    // build our application with a single route
    let app = Router::new().route("/", get(a));

    // run it with hyper on localhost:3000
    axum::Server::bind(&"<IP_ADDRESS>:3000".parse().unwrap())
        .serve(app.into_make_service())
        .await
        .unwrap();
}

Also, maud and axum works fine If I change axum version to 0.2 and use the axum::handler::get handler.

Hi @alleyshairu, Axum 0.4 support is available in the repo but not released yet. In the meantime you can depend on the git repo directly:
maud = { git = "https://github.com/lambda-fairy/maud", features = ["axum"] }

Thanks  a lot! It worked. Feeling super embarrassed at the moment.


Properly set device code auth type

This fixes a bug in device code where if the tenant requests a reauthentication during connection, the reauthentication would go back to AuthCodeGrant since the auth type was incorrectly set during the initial account sign-in.
Here is the prompt when the tenant requests a reauthentication.

Unfortunately, device code can still fail if tenant has additional devicecode auth policies, such as that the machine is using machine management software, etc.  This is still a problem in webmode where the connecting machine is arbitrary Linux container.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 2 (0.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 41.635%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

extensions/azurecore/src/account-provider/auths/azureDeviceCode.ts
0
1
0.0%

extensions/azurecore/src/account-provider/azureAccountProvider.ts
0
1
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
26395

Relevant Lines:
57409

💛  - Coveralls


Setting to toggle vibration when creating new alarms

It'd be nice if we could set alarms to vibrate by default when creating new ones.

@lyonelzd
It will be available in the next release 😉

@lyonelzd It will be available in the next release 😉

Beautiful, thank you for your work! Been loving the app :)

Note: the default value of the new setting will be deactivated, as vibrations are not necessarily desired.
See this comment from the old repository as well as this comment.


[WIP] - New Versioning

New Versioning
We want to offer better versioning in Compendium, more clear and robust than what we have right now. In this PR I present a new way of versioning.
References
I used this post as a guideline.
How is it defined?
This new versioning is quite similar to classic SemVer, but with a few changes. The format is this:
model.revision.addition
In then post they propose this format:
model-revision-addition
But I don't like it and find it less intuitive than the one I used.

Model: it is equivalent to Major in SemVer. A modification that break interaction with all previously existing data has to increment this value.
Revision: Equivalent to Minor in SemVer. A modification that may, o may not, break interaction with all previously existing data has to increment this value.
Addition: Equivalent to Patch in SemVer. A modification that does not break interaction with all previously existing data has to increment this value.

The default, or first, version of a schema must be 1.0.0.
Show me the bowels!
Although in DB and HTTP Responses the version will appear as a String with the format I exposed above, in the code, a Version is a case class with this shape:
ProtocolVersion(model: ModelVersion, revision: RevisionVersion, addition: AdditionVersion)

Where ModelVersion, RevisionVersion, and AdditionVersion are Tagged Types, of type Int with Eq, Show, Decoder, Encoder, and Monoid instances.
In this way, it is much easier to handle a version or update it. That part of the code is a little bit documented.

Thanks @Yawolf ! I believe @BenFradet used this in the past, I'd like to know his thoughts. Also, the other thing is that we may miss compatibility with Schema Registry at API level 🤔

yes, I think the idea in the post has several flaws especially regarding user interaction: people don't know what version to choose when they change their schema.
I think a simpler dichotomy would be:

major: when you break compatibility
minor: when you don't break compatibility

Regarding the api compatbility with schema registry, we can still do:

/v0/protocol/shop?version=1
/v0/protocol/shop?version=1.2

so it will still be mostly compatible

Thanks @Yawolf ! I believe @BenFradet used this in the past, I'd like to know his thoughts. Also, the other thing is that we may miss compatibility with Schema Registry at API level 🤔

@juanpedromoreno I gave a fast look to this last Friday. Maybe I'm wrong but in schema registry the versions are Ints. Check this:
https://docs.confluent.io/current/schema-registry/develop/api.html#get--subjects-(string- subject)-versions-(versionId- version)

version (versionId) – Version of the schema to be returned. Valid values for versionId are between [1,2^31-1] or the string “latest”. “latest” returns the last registered schema under the specified subject. Note that there may be a new latest schema that gets registered right after this request is served.

yes, I think the idea in the post has several flaws especially regarding user interaction: people don't know what version to choose when they change their schema.
I think a simpler dichotomy would be:
* major: when you break compatibility

* minor: when you don't break compatibility

Regarding the api compatbility with schema registry, we can still do:
* `/v0/protocol/shop?version=1`

* `/v0/protocol/shop?version=1.2`

so it will still be mostly compatible

Does Schema Registry accept versions such as 1.2, or 2.7? If so, then much better, but I thought it does not.

no it doesn't but what I meant is that we can work around compatibility, we already abstract routing for compatibility reasons we can also abstract versioning :slightly_smiling_face:

no it doesn't but what I meant is that we can work around compatibility, we already abstract routing for compatibility reasons we can also abstract versioning 🙂

I was thinking to create a function to generate new Schema Registry compatible versions from this new versioning. Something like:
1.0.0 -> 100
17.69.15 -> 176915
17.70.0 -> 177000
But this is only an injective relation, given a Schema Registry version that does not exist in our service, the only thing we could do it to set the current version in Shema Registry as the Model Version in out versioning:
1 -> 1.0.0
37 -> 37.0.0
123 -> 123.0.0

I'm fine with the Ben's proposal here

Regarding the api compatbility with schema registry, we can still do:

/v0/protocol/shop?version=1
/v0/protocol/shop?version=1.2
so it will still be mostly compatible

👍  Thanks both!


For some reason clips_share_preview_to_feed is bein ignored

Any one knows why clips (reels) if posted but feed preview not?

IDK, "Share Preview To Feed" works fine:

https://www.instagram.com/dhbastards/


Transition into untitled workspace from WSL folder does not seem to work

Steps to Reproduce:

open an empty window connected to WSL
open a single folder /home/<name>/workspaces/jschardet
click File > Add Folder to Workspace
select /home/<name>/workspaces/electron-message-port
the window reloads into the untitled workspace

However it never finishes to load and show the folders:

Console shows:
ERR TreeError [FileExplorer] Tree element not found: [object Object]: Error: TreeError [FileExplorer] Tree element not found: [object Object]
    at u.getCompressedNode (file:///C:/Users/bpasero/AppData/Local/Programs/Microsoft VS Code Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:56:62899)
    at u.setCollapsed (file:///C:/Users/bpasero/AppData/Local/Programs/Microsoft VS Code Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:56:62410)
    at h.setCollapsed (file:///C:/Users/bpasero/AppData/Local/Programs/Microsoft VS Code Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:56:65698)
    at C.collapse (file:///C:/Users/bpasero/AppData/Local/Programs/Microsoft VS Code Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:163:265)
    at G.doRefreshNode (file:///C:/Users/bpasero/AppData/Local/Programs/Microsoft VS Code Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:163:20724)
    at async G.doRefreshSubTree (file:///C:/Users/bpasero/AppData/Local/Programs/Microsoft VS Code Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:163:20229)
    at async Promise.all (index 0)
    at async G.doRefreshSubTree (file:///C:/Users/bpasero/AppData/Local/Programs/Microsoft VS Code Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:163:20272)
    at async G.refreshAndRenderNode (file:///C:/Users/bpasero/AppData/Local/Programs/Microsoft VS Code Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:163:19781)
    at async G._updateChildren (file:///C:/Users/bpasero/AppData/Local/Programs/Microsoft VS Code Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:163:17022)
    at async G.setInput (file:///C:/Users/bpasero/AppData/Local/Programs/Microsoft VS Code Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:163:16465)

Let's assign to January so we can investigate
Sounds similar to https://github.com/microsoft/vscode/issues/113562
@aeschli let me know if  there is some easy way to get into this state without WSL so I could investigate. I can also try to setup WSL on my Win VM

Let's assign to January so we can investigate
Sounds similar to https://github.com/microsoft/vscode/issues/113562
@aeschli let me know if  there is some easy way to get into this state without WSL so I could investigate. I can also try to setup WSL on my Win VM

@aeschli friendly ping for this. Let me know how I can best help here :)

I'm not able to reproduce the issue. First folder with contents of https://github.com/aadsm/jschardet.git, second folder something else.
@bpasero Do you still see it? Any more steps to add?
@isidorn Maybe the error that is printed could be improved to more than `[object Object]

If you cannot reproduce feel free to close. I can verify in endgame week, don't have the setup anymore just now.

@aeschli makes sense, with this commit cd370fa2296 the error should now be more precise

Also let's close this one for now, and if Ben sees it again we can reopen.


nomachine-client: Added nomachine server and rename to nomachine

Motivation for this change
Switching to NixOs as my daily driver made me miss the availability of NoMachine server. After some fiddling I now have a working implementation on at least 2 systems. However as I'm fairly new to nix I would like some feedback about what could be improved and what is missing. Discourse page here
Things done

Built on platform(s)

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

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

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

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

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

[ ] Fits CONTRIBUTING.md.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/nomachine-server/16899/4

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/nomachine-server/16899/4

Thanks for your time! Any feedback is appreciated :) Allows me to learn best practices!

Thanks a lot for doing this! I'll try it out and review it properly when I have time next week.

Thanks for you time! I will work through your comments when I have some time available, hopefully before the end of next week.
Regarding the strange file placement and layout, that's due to how NoMachine seems to be setup. Their normal install procedure sort of creates its own rootfs in /usr/NX/. Except they also place copies of certain binaries in /etc/NX. Then they use config files in /etc where you can set the NX root (normally /usr/NX) except that there are a lot of hardcoded paths to /etc for the binaries anyway.  I tried to patch a lot, including those obfuscated perl file which the weird bash function is for, but they also exist in the binaries. So my solution was to simply create the file paths instead of trying to patch those as well.
Besides the hard coded paths they are also very fond of keeping state in weird places like /usr/NX/etc. Which is what explains the symlinks to /var/lib
The way I set it up now is what I did after spending a week of looking at strace output and cursing at finding yet another hard coded path :) So it is very possible it can be improved or simplified. I also do not know what preferred file locations are in Nix, so please point me at the correct locations!
Thanks again for your efforts!

I see, I figured it was something like that :)
If possible, it would be nice to at least have a unified etc: keep everything needed in /etc, point ${nxserver}/NX/etc to it and get rid of /var/lib/nxserver/etc.
I would say that the preferred paths for services in NixOS are generally close to FHS where possible and follows what systemd uses by default:

configuration files in /etc
(persistent) state in /var/lib
(temporary) runtime files in /run
temporary files in /tmp

Sorry for the late reply.
I've now looked into this in more detail and started improving things on my own branch instead of submitting everything as suggestions. Here is all of it in one commit: https://github.com/talyz/nixpkgs/commit/ec259d87b4c88688fe809a2c694647a1d6aa8027. It's mostly changes to make the code more readable, simplify the wrappers as much as possible, make the hex replacement stuff more future-proof (hopefully) and minor changes to the directory structure. Unless you disagree with any of it, you're welcome to squash it.
I also added a parameter in the node config to enable audio, but this highlights another aspect that I think needs to be addressed - we should make it possible for the user to change the configuration, preferably in an RFC 0042 compatible way.

Oh yeah, I forgot to address your question - I think chowning, as you currently do, it is the best solution. At least, I couldn't find any declarative way to do it that works equally well.

I've tested this with the commit from @talyz, and I can connect but I get "No available sessions on this server." Tried with X11 and Wayland. In the logs I see 2846 2885 2022-03-13 13:41:46 216.850 ServerPhysicalSession/ServerConnectOnDisplaySocket: ERROR! Can't connect to socket @'/tmp/.X11-unix/X0' proto UNIX. 2846 2885 2022-03-13 13:41:46 216.908 ServerPhysicalSession/ServerConnectOnDisplaySocket: Error is 11, Resource temporarily unavailable..

@talyz Awesome, thanks for you work! I squashed it to my branch . The only thing was not sure about is the removal of the nxserver wrapper, but it seems to work.
@austinbutler For me the last changes seem to work fine, they include the changes by @talyz. However I'm using X11 so there could be a difference there. Did it work with an earlier commit? If so could you try reinstating the nxserver wrapper that was removed? Its been a while since I straced everything so I cant remember if it was required or a left over attempt to get stuff working.

@austinbutler I don't think NoMachine works with wayland yet. I also had issues getting it to work with gdm i NixOS. Maybe because it's running in rootless mode? I didn't investigate it further. It worked for me when I switched to sddm.

Looking at this issue, support for Wayland should be implemented. Perhaps there is some additional configuration required like setting the DefaultDesktopCommand.

@rytec-nl No problem! Okay, great! Yeah, I figured it wasn't really necessary, since the unwrapped nxserver was being executed in the service anyway.

I tried with both X11 and Wayland. I'll try to test again over the weekend.

I think the next steps are adding configuration options for serverConf and nodeConf using freeform modules and lib.generators.toKeyValue, and figuring out the issue @austinbutler is seeing.

Tried again today with latest commit from this PR. Same behavior pretty much. It connects for about a second then disconnects. I'm using Gnome with GDM on Wayland. I disabled UDP in the client settings to try to simplify things.
nxserver.log
59089 59089 2022-03-19 08:35:54 406.534 NXSERVER User 'austin' logged in from '<IP_ADDRESS>' using authentication method NX-password.
44165 44165 2022-03-19 08:35:54 646.651 NXSERVER WARNING! Cannot check WM on display :0 EEXIST
59089 59089 2022-03-19 08:35:58 170.045 NXSERVER User 'austin' from '<IP_ADDRESS>' logged out.
44165 44165 2022-03-19 08:35:58 195.930 NXSERVER WARNING! Session E5B4AB590F41027EF4C20F1DF352125C crashed on display 0.
59363 59363 2022-03-19 08:35:58 812.816 NXSERVER User 'austin' logged in from '<IP_ADDRESS>' using authentication method NX-password.
59363 59363 2022-03-19 08:35:59 081.132 NXSERVER User 'austin' from '<IP_ADDRESS>' logged out.

nxerror.log
Info: Handling connection from <IP_ADDRESS> port 46706 on Sat Mar 19 08:35:42 2022.
unable to link authority file /nix/store/f5fmp22dh4zislfkn2djkcswkb7j7l4d-nomachine-7.8.2/NX/var/tmp/nx, use /nix/store/f5fmp22dh4zislfkn2djkcswkb7j7l4d-nomachine-7.8.2/NX/var/tmp/nx-n
Authorization required, but no authorization protocol specified
Authorization required, but no authorization protocol specified
44165 59205 08:35:54 646.469 HostWmRunningHelper: WARNING! Failed to open display ':0'.
44165 44165 08:35:55 116.110 Redis: Background saving started by pid 59271.
59271 59271 08:35:55 135.198 Redis: RDB: 0 MB of memory used by copy-on-write.
Info: Connection from <IP_ADDRESS> port 46706 closed on Sat Mar 19 08:35:55 2022.
Info: Handler with pid 59089 terminated on Sat Mar 19 08:35:55 2022.
44165 44165 08:35:55 158.483 Redis: Background saving terminated with success.
Info: Handler started with pid 59363 on Sat Mar 19 08:35:58 2022.
Info: Handling connection from <IP_ADDRESS> port 46758 on Sat Mar 19 08:35:58 2022.
Info: Connection from <IP_ADDRESS> port 46758 closed on Sat Mar 19 08:35:59 2022.
Info: Handler with pid 59363 terminated on Sat Mar 19 08:35:59 2022.

Switching to X11, it doesn't crash quite the same way, just get the no session found error.
nxserver.log
44165 44165 2022-03-19 08:35:58 195.930 NXSERVER WARNING! Session E5B4AB590F41027EF4C20F1DF352125C crashed on display 0.
59363 59363 2022-03-19 08:35:58 812.816 NXSERVER User 'austin' logged in from '<IP_ADDRESS>' using authentication method NX-password.
59363 59363 2022-03-19 08:35:59 081.132 NXSERVER User 'austin' from '<IP_ADDRESS>' logged out.
44165 44165 2022-03-19 08:45:04 522.422 NXSERVER WARNING! Node localhost:4000 from session FDCDC9D253D32FBC53FFDFAEB46CF221 reported: Session with pid '24009' terminated unexpectedly.
44165 44245 2022-03-19 08:45:04 541.371 ServerPhysicalSession/ServerConnectOnDisplaySocket: ERROR! Can't connect to socket @'/tmp/.X11-unix/X1' proto UNIX.
44165 44245 2022-03-19 08:45:04 541.422 ServerPhysicalSession/ServerConnectOnDisplaySocket: Error is 111, Connection refused.
44165 44245 2022-03-19 08:45:04 541.583 ServerPhysicalSession/ServerConnectOnDisplaySocket: ERROR! Can't connect to socket @'/tmp/.X11-unix/X1' proto UNIX.
44165 44245 2022-03-19 08:45:04 541.595 ServerPhysicalSession/ServerConnectOnDisplaySocket: Error is 111, Connection refused.
44165 44245 2022-03-19 08:45:04 541.728 ServerPhysicalSession/ServerConnectOnDisplaySocket: ERROR! Can't connect to socket @'/tmp/.X11-unix/X1' proto UNIX.
44165 44245 2022-03-19 08:45:04 541.739 ServerPhysicalSession/ServerConnectOnDisplaySocket: Error is 111, Connection refused.
70761 70761 2022-03-19 08:47:33 998.395 NXSERVER User 'austin' logged in from '<IP_ADDRESS>' using authentication method NX-password.
70761 70761 2022-03-19 08:47:44 106.528 NXSERVER User 'austin' from '<IP_ADDRESS>' logged out.

nxerror.log
44165 59205 08:35:54 646.469 HostWmRunningHelper: WARNING! Failed to open display ':0'.
44165 44165 08:35:55 116.110 Redis: Background saving started by pid 59271.
59271 59271 08:35:55 135.198 Redis: RDB: 0 MB of memory used by copy-on-write.
Info: Connection from <IP_ADDRESS> port 46706 closed on Sat Mar 19 08:35:55 2022.
Info: Handler with pid 59089 terminated on Sat Mar 19 08:35:55 2022.
44165 44165 08:35:55 158.483 Redis: Background saving terminated with success.
Info: Handler started with pid 59363 on Sat Mar 19 08:35:58 2022.
Info: Handling connection from <IP_ADDRESS> port 46758 on Sat Mar 19 08:35:58 2022.
Info: Connection from <IP_ADDRESS> port 46758 closed on Sat Mar 19 08:35:59 2022.
Info: Handler with pid 59363 terminated on Sat Mar 19 08:35:59 2022.
Info: Handler started with pid 70761 on Sat Mar 19 08:47:24 2022.
Info: Handling connection from <IP_ADDRESS> port 48546 on Sat Mar 19 08:47:24 2022.
Info: Connection from <IP_ADDRESS> port 48546 closed on Sat Mar 19 08:47:44 2022.
Info: Handler with pid 70761 terminated on Sat Mar 19 08:47:44 2022.

Is there a particular change or commit I should try?

Here are some things to try to get Wayland sessions working: https://knowledgebase.nomachine.com/AR04R01083 Maybe you could also try switching to ssdm to see if this is specifically a problem with gdm.

@austinbutler
Just tested this in my configuration.nix and it seems to be a decent work around for the issue you had with GDM.
services.xserver.displayManager.gdm.wayland = false;

I believe you'll have to restart display-manager.service first before this will take effect.
I tried a couple of things to get it working with wayland but I didn't have any luck.

@lucasew Thanks for your input! I did the small things for now. I will start on the configuration so that it will be according to RFC 42.
Furthermore I also started looking into compiling the usb kernel module as I would like to pass through some devices. And I also noticed that the nomachine client interface can't reach the server to display the status. I will also take a quick look into that.

I implemented what I think is compatibility with RFC 42, there might be some things that can be done better/easier but it seems to be working at least :)

I think it's fine to keep the option case as it's used in the original config file. It's simpler to apply the official documentation to the configs. The RFC42 is a cleaner way to merge configurations from different parts because it uses the merge functionality of the options.

I applied @talyz his update to 7.9 and also managed to get the nxusb kernel module compiling, loading and forwarding an USB camera successfully.

Does the server status in the NoMachine GUI work for anyone? I just get a message saying querying the server indefinitely.

Its indeed not working, I'm planning to look into it when I have some time again.

I had a quick look at it and found an issue that /etc/NX/nxserver should not be a symlink. That causes an error like everyone has write access to file or something like that. Changing it now makes it show an error in the nxserver logs, but it seems its related to #42117 as it fails on the same assert:
/nix/store/yx5zifiwsc7zbd54zs7l8i4a6nrrg6wf-wrapper.c:195: main: Assertion `!(st.st_mode & S_ISUID) || (st.st_uid == geteuid())' failed.

I will look into it some more when I have more time available.

BTW something I noticed is that even on my working Arch install there are plenty of warnings and errors when everything is seemingly running perfectly fine. And this is Gnome 42 on Wayland with GDM. So if you want me to check or test anything I can compare to a working install.

I've updated my fork with the following changes. Feel free to pull them in.

Format and refactor for readability
Refactor some parts of the code and format it with nixpkgs-fmt. The code formatting done by Alejandra seems a bit odd and non-standard.

Add support for lists in settings

Restart server when config files are changed

Add quotes around all config file strings
Seems like all strings can have optional quotes, so let's just always add them.

Sorry for the long period of silence! Life is very busy. @talyz I cherry picked your changes and rebased on master. I still don't have time to look at the other issues but at least its up to date again.

Hi, how can I help test this? I think I've found how to try a PR. Can I use nomachine with Cinnamon? What config options are there? Sorry, I'm really new to NixOS, was looking ways to get remote desktop working, and I have used nomachine a couple of years ago - was impressed with its speed. Thanks.

Hi, how can I help test this? I think I've found how to try a PR. Can I use nomachine with Cinnamon? What config options are there? Sorry, I'm really new to NixOS, was looking ways to get remote desktop working, and I have used nomachine a couple of years ago - was impressed with its speed. Thanks.

I’m not sure if this is the best way but I manually added the module to my nix files and then imported the package as an overlay https://github.com/computercam/_unixconf_nix/tree/master/config/modules/nixos/service-nomachine

When will this PR be merged?

I'm using lightdm+light-locker+xfce4+i3 on NixOS, I manually patched this PR to my nix files. If I lock the remote desktop in nomachine, the xserver will crash:
ov 14 00:33:19 cgq-wr-workstation systemd-logind[855]: New session c80 of user lightdm.
Nov 14 00:33:19 cgq-wr-workstation systemd[1]: Finished User Runtime Directory /run/user/78.
Nov 14 00:33:19 cgq-wr-workstation systemd[1]: Starting User Manager for UID 78...
Nov 14 00:33:19 cgq-wr-workstation systemd[3437321]: pam_unix(systemd-user:session): session opened for user lightdm(uid=78) by (uid=0)
Nov 14 00:33:19 cgq-wr-workstation systemd[3437321]: Queued start job for default target Main User Target.
Nov 14 00:33:19 cgq-wr-workstation systemd[3437321]: Created slice User Application Slice.
Nov 14 00:33:19 cgq-wr-workstation systemd[3437321]: Reached target Paths.
Nov 14 00:33:19 cgq-wr-workstation systemd[3437321]: Reached target Timers.
Nov 14 00:33:19 cgq-wr-workstation systemd[3437321]: Starting D-Bus User Message Bus Socket...
Nov 14 00:33:19 cgq-wr-workstation systemd[3437321]: Listening on Sound System.
Nov 14 00:33:19 cgq-wr-workstation systemd[3437321]: Listening on D-Bus User Message Bus Socket.
Nov 14 00:33:19 cgq-wr-workstation systemd[3437321]: Reached target Sockets.
Nov 14 00:33:19 cgq-wr-workstation systemd[3437321]: Reached target Basic System.
Nov 14 00:33:19 cgq-wr-workstation systemd[3437321]: Run user-specific NixOS activation was skipped because of a failed condition check (ConditionUser=!@system).
Nov 14 00:33:19 cgq-wr-workstation systemd[3437321]: Reached target Main User Target.
Nov 14 00:33:19 cgq-wr-workstation systemd[3437321]: Startup finished in 188ms.
Nov 14 00:33:19 cgq-wr-workstation systemd[1]: Started User Manager for UID 78.
Nov 14 00:33:19 cgq-wr-workstation systemd[1]: Started Session c80 of User lightdm.
Nov 14 00:33:20 cgq-wr-workstation systemd[3437321]: Created slice User Core Session Slice.
Nov 14 00:33:20 cgq-wr-workstation systemd[3437321]: Starting D-Bus User Message Bus...
Nov 14 00:33:20 cgq-wr-workstation systemd[3437321]: Started D-Bus User Message Bus.
Nov 14 00:33:20 cgq-wr-workstation dbus-daemon[3437329]: [session uid=78 pid=3437329] Activating via systemd: service name='org.gtk.vfs.Daemon' unit='gvfs-daemon.service' requested by ':1.2'>
Nov 14 00:33:20 cgq-wr-workstation systemd[3437321]: Starting Virtual filesystem service...
Nov 14 00:33:20 cgq-wr-workstation dbus-daemon[3437329]: [session uid=78 pid=3437329] Successfully activated service 'org.gtk.vfs.Daemon'
Nov 14 00:33:20 cgq-wr-workstation systemd[3437321]: Started Virtual filesystem service.
Nov 14 00:33:40 cgq-wr-workstation systemd[1]: Started Process Core Dump (PID 3437428/UID 0).
Nov 14 00:33:41 cgq-wr-workstation systemd-coredump[3437429]: [🡕] Process 3429754 (X) of user 0 dumped core.

                                                              Module linux-vdso.so.1 with build-id 7ee360307ba25bddd089a41c8fe5427604d7ea32
                                                              Module libpcre.so.1 without build-id.
                                                              Module libffi.so.8 without build-id.
                                                              Module libglib-2.0.so.0 with build-id 538272ff0210ccd7684076844a72b66ffa60bef7
                                                              Module libgobject-2.0.so.0 with build-id 3f3c9e93be437284ade4777ea7087afa5de97ba3
                                                              Module libgudev-1.0.so.0 without build-id.
                                                              Module libwacom.so.9 without build-id.
                                                              Module libevdev.so.2 without build-id.
                                                              Module libmtdev.so.1 without build-id.
                                                              Module libinput.so.10 without build-id.
                                                              Module libinput_drv.so without build-id.
                                                              Module libnvidia-glcore.so.515.48.07 with build-id 3b70a6428fe9eebb0f42d3ee81227f877bbb16be
                                                              Module libnvidia-tls.so.515.48.07 with build-id 49a02ec774cdfa043e3ce95652b5161601005094
                                                              Module libglxserver_nvidia.so with build-id a9fca87e5150260a9683f359a2a0dc8433354336
                                                              Module libwfb.so without build-id.
                                                              Module libfb.so without build-id.
                                                              Module librt.so.1 with build-id 8f96c8cd0fe8cadfeb644b9c09bc411ae389d397
                                                              Module nvidia_drv.so with build-id bda9953e74990bf8cb8bf7d677631273c35a9162
                                                              Module libxcb.so.1 without build-id.
                                                              Module libGLdispatch.so.0 without build-id.
                                                              Module libXext.so.6 without build-id.
                                                              Module libX11.so.6 without build-id.
                                                              Module libGLX.so.0 without build-id.
                                                              Module libGL.so.1 without build-id.
                                                              Module libglx.so without build-id.
                                                              Module libgpg-error.so.0 without build-id.
                                                              Module libgcrypt.so.20 without build-id.
                                                              Module libcap.so.2 without build-id.
                                                              Module liblz4.so.1 without build-id.
                                                              Module libzstd.so.1 without build-id.
                                                              Module libz.so.1 without build-id.
                                                              Module libpng16.so.16 without build-id.
                                                              Module libbz2.so.1 without build-id.
                                                              Module libfreetype.so.6 without build-id.
                                                              Module libfontenc.so.1 without build-id.
                                                              Module liblzma.so.5 without build-id.
                                                              Module libgcc_s.so.1 without build-id.
                                                              Module libdl.so.2 with build-id ee65858bad70782c28db27182096e32034dca88c
                                                              Module ld-linux-x86-64.so.2 with build-id ee237f4a6fcbda71ca5a936c29dd37fe13b77323
                                                              Module libc.so.6 with build-id fcc74e6d20f2fb15ea41bcd03c49d1a9f6a65ac7
                                                              Module libpthread.so.0 with build-id af59e9553922fae815e78b3d6081018b513f6809
                                                              Module libm.so.6 with build-id 6513a478668dcf256fbd43e001951badbdc0853e
                                                              Module libXdmcp.so.6 without build-id.
                                                              Module libxshmfence.so.1 without build-id.
                                                              Module libsystemd.so.0 without build-id.
                                                              Module libXau.so.6 without build-id.
                                                              Module libXfont2.so.2 without build-id.
                                                              Module libpixman-1.so.0 with build-id ed335f8d461bcef5ca5aec0502195f35207b53ed
                                                              Module libdrm.so.2 without build-id.
                                                              Module libpciaccess.so.0 without build-id.
                                                              Module libunwind.so.8 without build-id.
                                                              Module libcrypto.so.1.1 with build-id 126763365b8aa7c6553649dbef1e66396a7e050d
                                                              Module libudev.so.1 without build-id.
                                                              Module libdbus-1.so.3 without build-id.
                                                              Module Xorg without build-id.
                                                              Stack trace of thread 3429754:
                                                              #0  0x00007f9fb8da1c1f __pthread_kill_implementation (libc.so.6 + 0x87c1f)
                                                              #1  0x00007f9fb8d57042 raise (libc.so.6 + 0x3d042)
                                                              #2  0x00007f9fb8d4249c abort (libc.so.6 + 0x2849c)
                                                              #3  0x00000000005a5cfa OsAbort (Xorg + 0x1a5cfa)
                                                              #4  0x00000000005ab413 AbortServer (Xorg + 0x1ab413)
                                                              #5  0x00000000005ac3a6 FatalError (Xorg + 0x1ac3a6)
                                                              #6  0x00000000005a3089 OsSigHandler (Xorg + 0x1a3089)
                                                              #7  0x00007f9fb8d570e0 __restore_rt (libc.so.6 + 0x3d0e0)
                                                              #8  0x0000000000449658 DoFocusEvents (Xorg + 0x49658)
                                                              #9  0x000000000045325e DeactivateKeyboardGrab (Xorg + 0x5325e)
                                                              #10 0x0000000000532c4b ProcXIUngrabDevice (Xorg + 0x132c4b)
                                                              #11 0x0000000000442044 Dispatch (Xorg + 0x42044)
                                                              #12 0x0000000000446045 dix_main (Xorg + 0x46045)
                                                              #13 0x00007f9fb8d43237 __libc_start_call_main (libc.so.6 + 0x29237)
                                                              #14 0x00007f9fb8d432f5 __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x292f5)
                                                              #15 0x000000000042f801 _start (Xorg + 0x2f801)

                                                              Stack trace of thread 3429813:
                                                              #0  0x00007f9fb8e222cf epoll_wait (libc.so.6 + 0x1082cf)
                                                              #1  0x00000000005a39c7 ospoll_wait (Xorg + 0x1a39c7)
                                                              #2  0x00000000005a1141 InputThreadDoWork (Xorg + 0x1a1141)
                                                              #3  0x00007f9fb8d9fff2 start_thread (libc.so.6 + 0x85ff2)
                                                              #4  0x00007f9fb8e22bfc __clone3 (libc.so.6 + 0x108bfc)
                                                              ELF object binary architecture: AMD x86-64
Nov 14 00:33:41 cgq-wr-workstation systemd[1]<EMAIL_ADDRESS>Deactivated successfully.
Nov 14 00:33:41 cgq-wr-workstation systemd[1]<EMAIL_ADDRESS>Consumed 1.163s CPU time, no IP traffic.
Nov 14 00:33:41 cgq-wr-workstation warpd[3430428]: X connection to :0 broken (explicit kill or server shutdown).

dropping on in to say would love to see this PR land <3

I'm also very keen to see nx server land in NixOS.
@talyz were you satisfied with the change @rytec-nl made in response to your feedback? Any blockers to reviewing?

Merge conflict
lucasew@riverwood ~/WORKSPACE/nixpkgs 0$  nix run nixpkgs#nixpkgs-review -- pr --post-result 153072
$ git -c fetch.prune=false fetch --no-tags --force https://github.com/NixOS/nixpkgs master:refs/nixpkgs-review/0 pull/153072/head:refs/nixpkgs-review/1
remote: Enumerating objects: 36133, done.
remote: Counting objects: 100% (12594/12594), done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 36133 (delta 12580), reused 12572 (delta 12570), pack-reused 23539
Receiving objects: 100% (36133/36133), 30.29 MiB | 1.30 MiB/s, done.
Resolving deltas: 100% (23208/23208), completed with 3745 local objects.
From https://github.com/NixOS/nixpkgs
   10181346e6d..8af7032afaa  master                -> refs/nixpkgs-review/0
 + 22d230be61d...a312461214a refs/pull/153072/head -> refs/nixpkgs-review/1  (forced update)
$ git worktree add /home/lucasew/.cache/nixpkgs-review/pr-153072/nixpkgs 8af7032afaad219c0c37dd3d50171f73d37002a4
Preparing worktree (detached HEAD 8af7032afaa)
Updating files: 100% (34072/34072), done.
HEAD is now at 8af7032afaa Merge pull request #223049 from trofi/xorg.mkfontscale-update
$ git merge --no-commit --no-ff a312461214aa64253b74bd31f0d4a32cd029a932
Auto-merging nixos/modules/module-list.nix
Auto-merging pkgs/top-level/aliases.nix
CONFLICT (content): Merge conflict in pkgs/top-level/aliases.nix
Auto-merging pkgs/top-level/all-packages.nix
Automatic merge failed; fix conflicts and then commit the result.
https://github.com/NixOS/nixpkgs/pull/153072 failed to build
$ git worktree prune

BTW, this PR looks abandoned.
If there is no activity for one week from now, I think it's better to close it.
If someone needs this, they can submit another PR and use the diff of this one as a starting point.

Hi all,
Sorry for the lack of updates. I got distracted by other things and have since moved away from nomachine. This means for me the motivation to continue work on this has dropped. I will see if I can rebase on master to help continuation. If there are any questions regaring the implementation please let me know, I will do my best to answer them.

No problem, if you don't have the motivation anymore someone else can continue the work. This PR will not disappear.
The problem is more like we have a lot of PRs to review. Drafting is a good way to demonstrate that the pr is not ready to review but if you don't want to continue it anymore you can close it. You can open another one later, or someone else.

Result of nixpkgs-review pr 153072 run on x86_64-linux 1

2 packages blacklisted:

nixos-install-tools
tests.nixos-functions.nixos-test

1 package built:

nomachine

@talyz were you satisfied with the change @rytec-nl made in response to your feedback? Any blockers to reviewing?

Last I checked, there were still unresolved issues and @rytec-nl said he didn't have time to address them at the time. I can try to look into this again next week and see if this is still accurate.

I tried the server but got:
[nix-shell:~/.cache/nixpkgs-review/pr-153072-12]$ nxserver
awk: fatal: cannot open file `/nix/store/7m6bhzh37cq1z4pml4a820f6lwbnplmw-nomachine-7.10.1/NX/scripts.static/etc/server/localhost/server.cfg' for reading: No such file or directory
Cannot found ServerRoot in /nix/store/7m6bhzh37cq1z4pml4a820f6lwbnplmw-nomachine-7.10.1/NX/scripts.static/etc/server/localhost/server.cfg configuration file

Any ideas?

It looks like you are trying to start the server manually without using the provided nix service, is that correct? This pull requests adds a service that prepares required stuff when started, stuff like the missing config files. You can checkout nixos/modules/services/admin/nomachine.nix to see what is setup.
Also your ping reminded me that the systemd prestart script was broken, that should be fixed now :)

For what it's worth I was able to test this package on my machine by making the following changes:
-  imports =
-    [ # Include the results of the hardware scan.
-      ./hardware-configuration.nix
-    ];
+  # Loads up NoMachine package from https://github.com/NixOS/nixpkgs/pull/153072
+  imports = let
+      nixpkgs-tars = "https://github.com/NixOS/nixpkgs/archive/";
+      pr153072 = builtins.fetchTarball "${nixpkgs-tars}63686e66b7441ef5d5e7a6277d1c36c413548b05.tar.gz";
+    in
+      [ # Include the results of the hardware scan.
+        ./hardware-configuration.nix
+        (import "${pr153072}/nixos/modules/services/admin/nomachine.nix")
+      ];
+
+  disabledModules = [
+    "pkgs/tools/admin/nomachine-client/default.nix"
+  ];

-  nixpkgs.config.allowUnfree = true;
+  nixpkgs.config = {
+    # Allow unfree packages
+    allowUnfree = true;
+    # Loads up NoMachine package from https://github.com/NixOS/nixpkgs/pull/153072
+    packageOverrides = pkgs:
+      let
+        nixpkgs-tars = "https://github.com/NixOS/nixpkgs/archive/";
+        pr153072 = builtins.fetchTarball "${nixpkgs-tars}63686e66b7441ef5d5e7a6277d1c36c413548b05.tar.gz";
+      in
+    {
+        nomachine = pkgs.callPackage (import "${pr153072}/pkgs/tools/admin/nomachine/default.nix") {};
+    };
+  };
+

Then adding this to enable the service:
services.nxserver.enable = true

(Also need to either disable firewall, or allow NX ports).

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/trying-to-install-nomachine-server/35208/1

curious if anyone working on this has looked at this KB on the nomachine site about installing on silverblue and other immutable systems?
i'm new to nix (running a nixos vm currently) and would love to help out getting this package working since it would be a requirement for me to have in my daily driver

@rytec-nl Are you still interested in landing this?

Having this problem:
error: hash mismatch in fixed-output derivation '/nix/store/pb3zqkq8s1wabik28841i6kyax1hpfqr-nomachine_7.10.1_1_x86_64.tar.gz.drv':
	specified: sha256-alClFaNbQ76r8LukbygesWWXA5rx6VEzxK+bY5tOfO0=
	got:    sha256-Ba4kzbyj/MblReoqPyBg9nDhD/MP76T/dT+D7UP4nIE=

Oh, it's because "https://download.nomachine.com/download/7.10/Linux/nomachine_7.10.1_1_x86_64.tar.gz" is not available


read value on sensor is way to high with PT1000 sensor

the resistor value is correct and the read value shoukd be around 20C.
~ $ rtd 1 read 5
223.538010
~ $ rtd 1 readres 5
1085.951782
~ $ rtd 1 styperd 2
1

:~ $ rtd 1 board
Mega RTD firmware version 1.10
Vin 5.146V, Vrasp 5.158V, CPU Temp 33C
:~ $ rtd 0 board
Mega RTD firmware version 1.10
Vin 5.144V, Vrasp 5.133V, CPU Temp 31C
:~ $ rtd -v
rtd v1.2.2 Copyright (c) 2016 - 2021 Sequent Microsystems

This is free software with ABSOLUTELY NO WARRANTY.
For details type: rtd -warranty

hardware version 5.0

Hi
You use a PT1000 sensor?
You can use PT1000 only with card hw version = 5.0 and you need to do some more things to work (like cut the jumper and inform the card that you use pt1000).

You cut the jumper of the corresponded 5-8 channels?

Hi
You use a PT1000 sensor?
You can use PT1000 only with card hw version = 5.0 and you need to do some more things to work (like cut the jumper and inform the card that you use pt1000).

Yes i use a PT1000 sensor!
i only use it with card hw version = 5.0 and i have cut the jumper and informed the card that i use PT1000

You cut the jumper of the corresponded 5-8 channels?

yes, i checked with a continuity tester on my multimeter as well.

i cut it on both sides

I will check on RTD card an get back to you.

Hi,
Thanks for the bug report, I release firmware version 1.11 that solves the problem, please do a firmware update.
Alex.

great now it works.
a off topic question, how does the calibartion work?
and a comment on dokumentation:
on https://sequentmicrosystems.com/collections/all-io-cards/products/rtd-data-acquisition-card-for-rpi you wright "The board is shipped with the jumpers removed (PT1000)" this is not true for my board at least.

Hi,
We add some more words in the documentation but the Idea is that we do not calibrate the sensor but the resistance readings of the card. Pick 2 well known resistor but not too close as values connect them on the same channel and tell the card what the  real  resistance value is connected (for first resistor then for the second resistor), now the card will compensate future resistance measurements. The relation between resistance and temperature is a fixed one as I explain in the documentation (maybe not too well), if you want to change this you have to do it in the Raspberry.
I changed the documentation about select sensor type jumpers, thanks.

.


Prefer https:// URLs where available

Codecov Report

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

@@           Coverage Diff           @@
##           master     #121   +/-   ##
=======================================
  Coverage   85.77%   85.77%
=======================================
  Files          29       29
  Lines        3985     3985
=======================================
  Hits         3418     3418
  Misses        567      567

Impacted Files
Coverage Δ

pyasn1/codec/ber/decoder.py
86.94% <ø> (ø)
:arrow_up:

pyasn1/__init__.py
75% <ø> (ø)
:arrow_up:

pyasn1/codec/cer/decoder.py
93.75% <ø> (ø)
:arrow_up:

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 6910ce9...7672d97. Read the comment docs.

Thank you! ;)


New waitForDeployment check logic

This pull request replace the current setInterval implementation with an exponential check (30 seconds of max check delay).
This type of check permits a longer wait period without flooding the kubernetes master.
A longer wait period is required for service with a considerable number of functions and with a runtime that needs a build step (.net, java, ...).

Thank for merging @andresmgot!
I see that some tests were failed so this version is not pushed on npm registry.
Do you have any idea why these failures? I could try to fix those tests...

That's a bit annoying, the tests are not that reliable. For example, in this branch, the test that failed was the one that deployes a scheduled function:
https://travis-ci.org/github/serverless/serverless-kubeless/builds/718959671#L772
But in master, a unit test failed:
https://travis-ci.org/github/serverless/serverless-kubeless/builds/719211821#L337
Unfortunately, I don't know what can be causing this flakiness (and I don't have that much time to allocate for this).
Will release the version manually, thanks for the heads up.


Add the markdown files from the template project

There is a template project that is good to follow to include a few basic markdown files:
https://github.com/kubernetes/kubernetes-template-project

Keeping this issue open until kubernetes/kubernetes-template-project#4 resolved

honestly , we can close this. I will send you a PR to update the CLA stuff..

oh, sorry, I didn't see your message and when kubernetes/kubernetes-template-project#4 got approved, I created the PR: #24

Feel free to assign any of the issues to yourself if you want to work on them. I will label some of them as "help-needed" but honestly, any issue that is not assign to me is open to take :)


Fix MSVC output parsing

I've fixed the regex in parseMSVCDiagnostic
There was a bad indice used to capture the message, the regex also reject line that begins with \d+> because errors were reported twice.
As MSVC never gives the column, I have added a function to adjust the error range to underline the line content instead of the the first char.

Thanks! I'll release with these changes, and then subsequent releases will fix any issues with the parsers.


[AutoPR containerservice/resource-manager] Container Services: Add API version 2019-04-30 for Azure RedHat OpenShift

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/5557

This PR has been merged into https://github.com/Azure/azure-sdk-for-go/pull/4502


Fix ImmediateDestination formatting when BypassDestinationValidation is true

Fixes #814 and added tests

Codecov Report

Merging #817 (741da4e) into master (72e0ce1) will decrease coverage by 0.03%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #817      +/-   ##
==========================================
- Coverage   92.24%   92.20%   -0.04%
==========================================
  Files          66       66
  Lines        5105     5109       +4
==========================================
+ Hits         4709     4711       +2
- Misses        234      235       +1
- Partials      162      163       +1


Allow to sort the inventory even while in mod GUIs

Thanks for the RedPower support!  Would love if you could add the new Project Table.  Going to look at the code myself, but having an issue even compiling it.

Ok thanks for reporting this! If you want to do the update yourself there's a tutorial in case you didn't see it. If you get to build the mod, most of the time you'll only need to edit this file to add a new compatible container.

I was able to easily get the mod to function with the gui Window.  I'm now working on figuring out how to get things to sort right with it's unique layout.

Add RedPower2s Blulectic Furnace

I just merged your pull request. Note however that in the future I'll probably make the mod automatically decide if an unknown GUI is a "special inventory" or not, since 99% of container screens actually show the player's inventory. If the tests are clever enough it should keep incompatibilities to a minimum.


documentation update

fix https://github.com/fastai/course22/issues/101
Label Smoothing Explained using Microsoft Excel new url: https://amaarora.github.io/posts/2020-07-18-label-smoothing.html

Thank you!


bump: run with node20

Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20<EMAIL_ADDRESS>For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
Fixes #23

I just note the https://github.com/oras-project/setup-oras/issues/23 and this PR will resolved it.
PTAL,Thanks.
/cc @shizhMSFT @FeynmanZhou

Thank @liangyuanpeng for your great contribution!


Use voiceAssistant components

@lukasIO trying this branch, I'm seeing a couple of things:

the colors aren't matching the theme, making it look a bit jarring
the bars aren't animating correctly when the agent is speaking, it's just showing full volume the entire time (as shown in screenshot)
there are a few style things, tagging @mattherzog to align on

the glow around bars are gone
the bars are looking too tall

Before:

After:

thanks for taking a look!
There's a bug in the currently used components version that prevented tailwind classes to be passed to the new visualizer. So I couldn't properly update the styling.
Will update components and address the issues you mentioned.

thanks for taking a look! There's a bug in the currently used components version that prevented tailwind classes to be passed to the new visualizer. So I couldn't properly update the styling. Will update components and address the issues you mentioned.

Ah ha.. CSS strikes again.
Thanks for updating everything.. code is much cleaner.

should be fixed now!


[Migration][Migration Doc] Enable conversion of original claims from assertions to OIDC dialect

Describe the improvement
For OAuth/OIDC application, default behavior of IS till 5.11.0 was to send the original claims sent from IDP as it is to the service provider without converting the claims OIDC dialect. From 5.12.0-M8 onwards, this behavior has been changed and claims sent from IDP is converted to OIDC dialect before sending to the service provider. This was done by setting the following configuration to true by default.
During a migration, if this feature is not required add the following configuration to deployment.toml since this feature is enabled by default from 5.12.0-M8 onwards.
[oauth.oidc.claims]
enable_oidc_dialect = false

Affected

5.11.0 to 5.12.0-M7

Suggested labels

Migration
Migration doc.

Added to docs with https://github.com/wso2/docs-is/pull/2991, https://github.com/wso2/docs-is/pull/2997


add unshare apparmor profile test

ping @ewindisch @NathanMcCauley @diogomonica

Updated PTAL

LGTM (nice container names :+1:)

Also I solemly swear to keep this image up to date and beautiful :angel:

LGTM - although I think the '--mount-proc' version of the test is now redundant.

but but but acidburn AND cereal ;)

shit  I need to upgrade the PR servers

seeing some weirdness in that the integration-daemon is not adding the process to enforce mode even tho the profile is loaded... so stay tuned

ok got it... it's a bit hacky to say the least

but at least now we will have a way to test the profile in the future ;)

update PTAL
@tianon don't kill me :innocent:

Isn't apparmor a kernel feature?  What does the init script actually enable?

it needs to be started to add the profile to the process

and  ya idk but does not work without starting it eyeroll

Totally insane seeming, but LGTM :+1:

The way it's coded now, it'll only run in the build container, since folks running these tests outside that need to be using DOCKER_TEST_HOST.

@tianon I see, DOCKER_TEST_HOST is set if you want to run tests outside of a container? In this case, it will still be modifying apparmor config on the host. We should at least warn about about that somewhere.

it only does this if DOCKER_TEST_HOST is empty, which would imply its not running directly on some remote host

I swear this is safe you guys
(famous last words) but trust me

LGTM

who will click the button ;)

who will click the button ;)

It's tempting; it's nice and shiny and green!

LGTM

Asked @ewindisch  if it's safe to merge, just to be sure. And his "famous last words" were "it should be fine"
So, here we go!


Update replay_perception.py

Retaining all the existing functionality. Additionally you can also input multiple objects in the json file now as a list and can be parsed by the replay perception file.
[{
object 1
},
{
object 2
},
{
object 3
}]

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

Can someone please close this review ?

It has hanged the logic. each json (that contains id, postion, type)  is a object, not in filed trace.

@mickeyouyou  I am not sure if I follow you completely about whats missing in my code. Have you tested the code to see if there are any issues. Of course, as you indicated the obstacles class include the trace, and other fields like"id" etc. I think they are all maintained.
Here is an example of a json file I created for multiple objects. I didn't think it was necessary to upload it, but maybe I should have uploaded it to make my intentions clear.
combined_objects.json
[{
"id": 2,
"position": [369193.03, 4321565.05, 0.0],
"theta": 1.53,
"length": 4,
"width": 1.3,
"height": 1,
"speed": 0,
"tracking_time": 10,
"type": "VEHICLE",
"trace": [[369193.03, 4321565.05, 0.0]]
},
{
"id": 4,
"position": [369063.67, 4321341.47, 0.0],
"theta": -0.05,
"length": 4,
"width": 2,
"height": 1,
"speed": 2,
"tracking_time": 10,
"type": "VEHICLE",
"trace": [[369063.67, 4321341.47, 0.0],
[369067.53, 4321341.27, 0.0],
[369071.33, 4321341.07, 0.0],
[369075.02, 4321340.96, 0.0],
[369078.74, 4321340.93, 0.0]]
}]

@xiaoxq could you please see if your concerns are addressed ?

@xiaoxq  can you please approve this simple change ?


exit > 0 on errors

Just got pretty confused why it wasn't outputting anything in a build hook, but webpack exits 0 for errors so Apex (https://github.com/apex/apex) thought it was fine

yes, I've fixed it in webpack 2, but don't want to change the behavior for webpack 1 because it would be a breaking change

ah cool thanks


Improve update_call() function

Change the name of this function (potentially to call_update()). This function currently needs to be improved for structure and treatment search criteria.
Currently, calls such as:
browse(structure == "age" | structure == "size") fail. This needs to be improved, and tests need to be designed for this function.

I'm currently working on a general version of call_update() that uses string manipulations. I have a working draft of the code that seems to work in most cases; I just need to clean it up and run some tests before integrating it into the browse() function.

revised the draft code and implemented it in the browse() function.
Here are details on the update:

changed the function name to call_update, as we discussed.
added the function code to the file browse.R
the function can now handle any number of queries to structure and treatment, so that:
call_update(substitute(structure == "age" | structure == "size"))
returns
(structured_type_1 == "age" | structured_type_2 == "age" | structured_type_3 == "age" | structured_type_4 == "age") | (structured_type_1 == "size" | structured_type_2 == "size" | structured_type_3 == "size" | structured_type_4 == "size")
included support for the following logical operators: &, &&, |, ||, !
included support for the following comparison operators: ==, !=, <=, >=, >, <, %in%
tested that output is identical to the current update_call() function:identical(call_update(expression(structure == "size" & treatment == "control")),
          update_call(substitute(structure == "size" & treatment == "control")))
[1] TRUE

included support for ! A == B syntax
here's an example of a complex call that tests all features and the resulting output. This is a nonsense example, but demonstrates that the code works (formatted over multiple lines for easier viewing):> query <- substitute(
                   treatment == "control"
                   & !treatment == "burn"
                   & structure != "size"
                   | structure =="age"
                   &!lter_id %in% c(2,3)
                   && !lter_id >= 5
                   | lter_id > 4
                   & lter_id <=200
                   & lter_id < 42)
> call_update(query)
[1] (treatment_type_1 == "control" | treatment_type_2 == "control" | treatment_type_3 == "control")
     & !(treatment_type_1 == "burn" | treatment_type_2 == "burn" | treatment_type_3 == "burn")
     & (structured_type_1 != "size" & structured_type_2 != "size" &  structured_type_3 != "size" & structured_type_4 != "size")
     | (structured_type_1 == "age" | structured_type_2 == "age" | structured_type_3 == "age" | structured_type_4 == "age")
     & !lter_id %in% c(2, 3)
     && !lter_id >= 5
     | lter_id > 4
     & lter_id <= 200
     & lter_id < 42

note that in the code above, the argument structure != "size" gives the output (structured_type_1 != "size" & structured_type_2 != "size" &  structured_type_3 != "size" & structured_type_4 != "size"), which strings structure types together with & instead of |. This ensures that no structure types match size.
checked that the new and old version of browse returned identical results.old_browse <- browse(treatment == "fire" & structure == "size")
new_browse <- browse(treatment == "fire" & structure == "size")
identical(new_browse,old_browse)
[1] TRUE

also, for call_update() to work, stringr needs to be in the list of packages that load with popler.

I agree on deleting update_call - go ahead if you like.
Let's put stringr in section "Depends" of the DESCRIPTION file for now. However, we will have to handle dependencies otherwise, as I was repeatedly suggested not to use "depends".

deleted update_call.R... I suggest closing this issue once stringr is in the "Depends" section, since that gets into another issue (this one: https://github.com/AldoCompagnoni/popler/issues/23)

stringr is in DESCRIPTION, so I will close this issue!


Configuration as command line arg #222

Started working on passing configuration as command arguments.

@mholt if changed my PR accordingly (i'v done a forced push, hope is was not a bad idea)

Looks good to me, now just need to document some examples. :)

I have a typo in the function comments (Line 127, 4 and 3 are not sorted).
May i force push another time my PR?

I don't think there's any need to force push - just make the change, commit, and push regularly.

Ok, sorry for the force push. Typo fix committed.

Thanks @humboldtux! Excited to use this.

Yay, thank you indeed!

:tada: my first contribution to Caddy :tada:


Updated the source code for Multilayer Perceptron (MLP) multi-class c…

…lassification
The code given would result in a NameError over missing parentheses.
NameError: name 'sgd' is not defined

sgd is defined on the line above: sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)


Web: Use the bucket pattern rather than skipping - web

When iterating using skip to page through a collection it works but it inefficient when working through many pages. A better pattern is the bucket pattern: [https://www.mongodb.com/blog/post/paging-with-the-bucket-pattern--part-1]

The pattern is a schema design pattern, and I don't see us changing the schema design to bucket for pagination of boarding records....


Update phone support time to match the automated call system

Hey, I've been trying to reach your support team but have had no luck with either my support ticket or callbacks.
One thing I did spot was that the automated call system states you open 8am not 7am.
Also, the chat widget isn't there anymore on the site. I suspect that either that line should be removed or something needs fixing.
Cheers!
Description of the change:
Reason for the change:
Link to original source:

Closes #

Hi @sadir ,
Following up on this conversation from a while back, were you able to get the issue resolved with support? If so, is this PR still needed? Thank you for your patience and working through this.

Hi @astuteape - happy for you to do with this PR as you will. At the time I opened it there was definitely a discrepancy between the automated messages and the documentation.
If you're confident that your comms are synced up and saying the same thing, this PR isn't needed.
Cheers!

Hi @sadir
Thank you for the follow-up. I misunderstood the conversation above when closing. Thank you for the contribution.
Twilio SendGrid Docs Team


Please add shortcut for fast actions.py and actions.yaml editing

Hi it would be great to have a shortcut as mentioned in the =title.

The corresponding actions could be specified in the actions-file.


Chroma w/o Clickhouse

Hey there, I am scoping a variety of lightweight vectors stores and Chroma caught my attention for its batteries included approach. I was surprised to see clickhouse as a requirement and poked through the code a bit, looks like it's currently baked in there pretty good. I was wondering if you had any plans to make duckdb the default so the default install is more lightweight, and then add clickhouse or other DBs as an extra?

I see clickhouse_connect in both requirements.txt and pyproject.toml, and it looks like your duckdb code depends on your clickhouse integration code to some extent as well (hence my "baked in" comment). Is there some way to install and run Chroma without clickhouse that I missed?

Yea I'm ideally looking for a solution that can start very lightweight but has room to grow if needed. I saw elsewhere that you are also maybe removing sentence-transformers. What would your default embedding solution be then?
I am working on adding some optional NLP-based features to this data warehousing tool. I am hoping to make the default vector store as lightweight as possible while still avoiding reinventing the wheel. Chroma looks close to a fit.

Hi @totalhack you can run chroma without clickhouse, thats not a required path. Unfortunately we don't make the dependencies optional, is that what you are looking for? Once #267 lands, that is our approach to removing the dependency on sentence-transformers and replacing its deptree with a much lighter one.

Yea @HammadB , a combo of the two. Trying to minimize dependencies to minimize the chances of upstream conflicts for consumers of the library I'm developing, and also looking for something lightweight as a database to start but with the ability to be more than just a toy solution (Chroma seems close to a fit for this). Do you have a separate Chroma client install if I wanted to run the Chroma server as a separate docker service? I didn't see that, which prevented that workaround (have to do the full Chroma install to get the Chroma client).

@totalhack we have this now! https://pypi.org/project/chromadb-client/


Block event attributes

Closes #119

[ ] Add a test

I tried implementing this with a specific disallow list from here but that ended up being really slow. This approach searches for on[a-z] at the start of the attribute name disallows that. Unfortunately it could have unwanted side effects for attributes like only, but according to the HTML5 spec, that should really be data-only. 🤷


Can vendoring be used somehow to speed up compilation?

Note: in one experiment I did just now, go clean; go build . in the driver directory took between 1 and 2 seconds. Then go clean; go mod vendor; go build . took 44 seconds. (!!)
So maybe this is not something we can do.

Confirmed with further experimentation: vendoring is not a performance win. Closing.


platform_packages.md: Updated PGP key for the new artful PPA matching the DR's one

The PGP key of the previous PPA versions (xenial, yakkety, zesty) were based on RSA 2048.
The new security standards require 4096 bits key.
It also enables me to use the same PGP key between the PPA & the DR (Debian) repositories.

Thank you @jean-christophe-manciot for the PR!
So I can't reproduce the Travis failure on tip
$ go test -v
=== RUN   TestRoundTrip
--- PASS: TestRoundTrip (28.23s)
	dcrypto_test.go:53: Testing file of size: 0b
	dcrypto_test.go:53: Testing file of size: 24b
	dcrypto_test.go:53: Testing file of size: 1337b
	dcrypto_test.go:53: Testing file of size: 66560b
	dcrypto_test.go:53: Testing file of size: 0b
	dcrypto_test.go:53: Testing file of size: 24b
	dcrypto_test.go:53: Testing file of size: 1337b
	dcrypto_test.go:53: Testing file of size: 66560b
	dcrypto_test.go:53: Testing file of size: 0b
	dcrypto_test.go:53: Testing file of size: 24b
	dcrypto_test.go:53: Testing file of size: 1337b
	dcrypto_test.go:53: Testing file of size: 66560b
	dcrypto_test.go:53: Testing file of size: 0b
	dcrypto_test.go:53: Testing file of size: 24b
	dcrypto_test.go:53: Testing file of size: 1337b
	dcrypto_test.go:53: Testing file of size: 66560b
=== RUN   TestHash
--- PASS: TestHash (6.68s)
	dcrypto_test.go:92: Testing file of size: 0b, with password: test
	dcrypto_test.go:92: Testing file of size: 24b, with password: test
	dcrypto_test.go:92: Testing file of size: 1337b, with password: test
	dcrypto_test.go:92: Testing file of size: 66560b, with password: test
PASS
ok  	github.com/odeke-em/drive/src/dcrypto	34.972s
Emmanuels-MacBook-Pro-2:dcrypto emmanuelodeke$ go version
go version devel +9d5f8ea Fri Dec 15 02:48:35 2017 +0000 darwin/amd64


Archive changelog and link addon changelog to root

Closes #220
@pocka I tried to configure Auto to output CHANGELOG.md to the root, but didn't see an option for that. For now I've created a symbolic link from the package changelog to the root directory. If you have better ideas I'm open to trying other things. WDYT?

@pocka I tried to configure Auto to output CHANGELOG.md to the root, but didn't see an option for that. For now I've created a symbolic link from the package changelog to the root directory. If you have better ideas I'm open to trying other things. WDYT?

Unfortunately GitHub (still) does not support symlink on their web UI...
https://github.com/storybookjs/addon-designs/blob/shilman/fix-changelog/CHANGELOG.md
Maybe having a <repo root>/CHANGELOG.md that have something like below would be good enough (better than nothing).
See <./packages/storybook-addon-designs/CHANGELOG.md>

@pocka fair point. updated!

Thanks, looks good to me!

Thanks so much for pointing it out!


Error info for responses

I’m just looking at the OpenAPI spec, and the error message responses are missing in most places,

I´m just trying to build out my Ansible module with some helpful error handling, 401 vs 403 vs 404
403:
{
"detail": "You do not have permission to perform this action."
}
I can see that the API does handle pretty well, bad requests I throw at it with informative messages.
if info["status"] == 401:
    module.fail_json(msg='Failed to login using API token, please verify validity of API token.')
elif info["status"] == 403:
    detail = json.loads(result.read().decode("utf-8")).get("detail", "")
    module.fail_json(msg=f'Failed to access MSP resource: {detail}')
elif info["status"] != 200:
    # Todo: this needs to be changed to a more informative error message
    module.fail_json(msg="Failed to get orgs: status:{info['status']} ")

It would be amazing to get some of the errors into the OpenAPI spec “contract” for what errors are handled by the API and if I can always expect a {“details”:”blablabla”}

Hi,
Yes, it's something I would like to add, but OpenAPI specifications are not allowing to set "global" responses, which means it must be manually added to the +500 requests...
but in General:
HTTP401: you are not authenticated or the API Token is not valid
HTTP403: you are trying to access an msp/org/site with a token which doesn't have access to it
HTTP404: you are trying to access a resource which doesn't exists (e.g.: wrong device_id)

Hey, awesome, I can see responses now!


Display control not work

There is a another bug in iobroker adapter. I can not control display on/off with iobroker objects or scripts. Web control allready works perfectly. I there a way to control the tablet with web commands as workarround?

Phone model and version of android?

This issue occurs on all my tablets (various Anfroid versions ... 7-8). I think, thats not a problem of the android app. I can switch screen on/off with androids app web interface perfectly. Only the iobroker adapter (objects and scripts) did'nt. I tried both variants (turnOnOff and toWake).

I there a way to control the tablet with web commands as workarround?
about as:
http://<ip>:8080/?toWake=true?

If it works through the web interface, it should work through the objects too.
To wake the screen, use the toWake command.
You can do this:

through objects
paw.0.MiA2Lite.comm.display.toWake
send true or false
JS
sendTo ("paw.0", 'all', {toWake: true});
get or post request
http://:8080/api/set.json?toWake=true

Wait for the next update, fixed the work of the function "toWake"