JSX spaces are not stable

sortIndicator =
   <Icon icon={sortDescending ? 'triangle-down' : 'triangle-upward'} />;

turns into
sortIndicator = (

     <Icon icon={sortDescending ? 'triangle-down' : 'triangle-upward'} />

);

which then turns into
https://jlongster.github.io/prettier/#{"content"%3A"sortIndicator %3D\n   <Icon icon%3D{sortDescending %3F 'triangle-down' %3A 'triangle-upward'} %2F><%2Fspan>%3B\n"%2C"options"%3A{"printWidth"%3A80%2C"tabWidth"%3A2%2C"singleQuote"%3Atrue%2C"trailingComma"%3Atrue%2C"bracketSpacing"%3Atrue%2C"doc"%3Afalse}}
sortIndicator = (

    <Icon icon={sortDescending ? 'triangle-down' : 'triangle-upward'} />

);

https://jlongster.github.io/prettier/#{"content"%3A"sortIndicator %3D (\n  \n     <Icon icon%3D{sortDescending %3F 'triangle-down' %3A 'triangle-upward'} %2F>\n  <%2Fspan>\n)%3B\n"%2C"options"%3A{"printWidth"%3A80%2C"tabWidth"%3A2%2C"singleQuote"%3Atrue%2C"trailingComma"%3Atrue%2C"bracketSpacing"%3Atrue%2C"doc"%3Afalse}}
If you look closely, there was 3 spaces before <Icon and when reprinted, there's only 2.

cc @rattrayalex

Hmm, the leading space in the first example should have been transformed into {' '} - that's a bug. Thanks for reporting! Hope to fix today.

This one is pretty tricky; ifBreak('{" "}', " ") is inside a parent which is breaking, but the group its in isn't breaking. So it's printing as a ' ' instead of a {' '}.
I'll probably have to elevate the ifBreak to a higher group, which may get pretty ugly unfortunately 😕

Is there a construct for breaking a child if the immediate parent breaks?

Do not wrap the child in a group?

Yep – just a bit awkward to extract in this case. Didn't end up being too bad.


Blend Shapes broken in Alpha 2

Arch Linux, Godot 3 Alpha 2
When importing a DAE with blend shapes the mesh is not visible.
In Alpha 1 the same DAE can be imported succesfully and blend shapes work!
I attached a zip with the DAE file and the material for the mesh.
stage-floor.zip

I'm having the same problem, a workaround seems to be to manually triangulate the mesh before exporting it.

I just got this same error on a glTF import with recent godot:
ERROR: RasterizerStorageGLES3::mesh_surface_get_array_index_len: Index p_surface=0 out of size (mesh->surfaces.size()=0)
   At: drivers\gles3\rasterizer_storage_gles3.cpp:3190

Looking at the code there, I think if p_shape is 0 and there are no blend_values, it should just do nothing instead of giving an error, as in my XXX comment below:
void VisualServerScene::instance_set_blend_shape_weight(RID p_instance, int p_shape, float p_weight) {

	Instance *instance = instance_owner.get(p_instance);
	ERR_FAIL_COND(!instance);

	if (instance->update_item.in_list()) {
		_update_dirty_instance(instance);
	}

        // XXX: if (p_shape==0 && instance->blend_values.size() == 0) { return; }
	ERR_FAIL_INDEX(p_shape, instance->blend_values.size());
	instance->blend_values[p_shape] = p_weight;
}

There's no necessity to give an error in that case, IMHO.

Downloaded a model from blendswap and exported it with better collada, it appeared different in godot then in blender. After some googling about an import error in the godot console came across a thread that mentioned normalizing the model manually before exporting.
Pressed Control+T to manually normalize the model. There where a couple modifications that needed to be made to the model afterwards but it resolved the issue of the model looking different in godot.

Actually, I remember forcing triangulation in the DAE exporter when blend shapes were used because otherwise this is impossible to do. This is probably an issue with BetterCollada, not Godot and should be opened there (as in, Force triangulation of meshes that use blend shapes).


New look site

WIP, but looks something like this:

Just need to update the docs and tweak a bit, but should be good to go then

This is probably good enough to merge now. We can iterate documentation improvements as we go, but this is a whole heap better now


Framework Comparison: Angular 5 faster

It looks like the benchmarks drawn and linked in the docs is outdated. I found a more recent version:
http://www.stefankrause.net/js-frameworks-benchmark7/table.html
That, if I'm reading correctly, shows Angular ahead in overall perf, possibly as well for memory allocation.
I think it would be nice to update the docs to reflect Angular's smaller memory footprint and marginally faster speed.

This doesn’t seem to be true especially in terms of memory allocation (less is better). As for perf, both libraries seem to perform similarly.

In terms of memory allocation, Vue is mostly better than Angular, but Angular absent zone has  better allocation.
For speed, the mean geometric slowdown favors Angular 5 any way you cut it.
I grant that Vue and Angular are effectively the indistinguishable when it comes to perf, but the docs state (paraphrasing) Vue is at least as fast, which is a false statement. Vue is not faster. The docs should reflect this.

@Jefftopia Thanks for bringing this up. We definitely want to avoid making overly broad statements or overgeneralizing from a limited benchmark, so I've just updated the text. I agree that the runtime performance of Vue and Angular are now at a point where it's unlikely to be a deciding factor, apart from the one critical metric of time-to-interactive, which will be more a result of Angular's much larger size (which we already cover) in most environments than its slower startup time.
Let me know what you think of the new text. I'm happy to reopen if you still don't feel it treats Angular fairly. 🙂

@chrisvfritz Personally, I think the copy change is 👍 . I can't speak for the wider community but if they care they can create a new ticket.


Remove a constraint doesn't "take"

My test case happens to have constraints in the class definition.  Removing one or both of the two constraints doesn't have any effect - the definition still shows the constraints.  It appears impossible remove constraints.
Creation and modification use the template:
Object rwSubclass: 'Moth'
instVarNames: #( aaa bbb ccc)
classVars: #()
classInstVars: #()
poolDictionaries: #()
category: 'PackageTwoA'
constraints: { { #aaa . String} .
{ #bbb . Integer} }
options: #()

This appears to a bug in Rowan. I created the Moth class in a workspace and it appeared in the browser showing constraints. Then I tried to remove the constraints by emptying the constraints part of the definition (in both the browser and workspace). In neither case were the constraints removed.
Assigning to Dale and opening Rowan issue https://github.com/dalehenrich/Rowan/issues/326

dalehenrich/Rowan#326 was fixed earlier today and is available on the candidate branch ... reassigning to @ericwinger so he can do the merge and then @LisaAlmarode cna validate

Changes in constraints now do show up in the code browsers and are written to disk.
Oddly, they do not show up in the project changes list. So not marking this closed, but the most important things are fixed.

Reassigning to @dalehenrich and reopening bug https://github.com/dalehenrich/Rowan/issues/326 referencing Lisa's comment about not showing up in change list.

Closed #326 in favor of https://github.com/dalehenrich/Rowan/issues/347

After talking with @dalehenrich, it appears Rowan is already prepared to give change information directly to Jadeite without going through the monticello patch layer.
Need a new gui to display. See https://github.com/ericwinger/Jade/issues/123


[iOS 18.1] Adding writingToolsBehavior support

Is your feature request related to a problem? If so, Please describe.
Currently, suppressMenuItems allows developers to suppress various menu items in the default context menu, such as "cut", "copy", "paste", and formatting options like "bold" or "italic". However, it does not provide the ability to remove Writing Tools action which was added in the latest iOS 18.1
Describe the solutions you came up with
I propose expanding the suppressMenuItems prop by adding option to suppress Writing Tools action. By adding this value to suppressMenuItems, developers can control not only basic text editing options but also Writing Tools, further enhancing the customization of the WebView context menu.
Additional context
WKWebView already has this parameter in WKWebViewConfiguration

Patch which add new prop (writingToolsEnabled: bool) for WebView to disable Writing Tools
react-native-webview+13.12.3.patch


bedtools_intersect: failing unit test

Hi @tgaspe !
bedtools_intersect is not passign all of it's unit tests:
+/tmp/viash_test_bedtools_intersect_14666924159864434615/test_test/test_executable ---cpus=2 ---memory=14gb
Notice:  Checking if Docker image is available at 'bedtools/bedtools_intersect:test'
Warning:  Could not pull from 'bedtools/bedtools_intersect:test'. Docker image doesn't exist or is not accessible.
Notice:  Building container 'bedtools/bedtools_intersect:test' with Dockerfile
Creating Test Data...
> Run bedtools_intersect on BED files with default intersect
- test1 succeeded -
> Run bedtools_intersect on BED files with -wa option
- test2 succeeded -
> Run bedtools_intersect on BED files with -wb option
- test3 succeeded -
> Run bedtools_intersect on BED files with -loj option
- test4 succeeded -
> Run bedtools_intersect on BED files with -wo option
- test5 succeeded -
> Run bedtools_intersect on BED files with -u option
- test6 succeeded -
> Run bedtools_intersect on BED files with -c option
- test7 succeeded -
> Run bedtools_intersect on BED files with -f 0.50 option
- test8 succeeded -
> Run bedtools_intersect on BED files with -f 0.30 option
- test9 succeeded -
> Run bedtools_intersect on BED files with -f 0.10 option
- test10 succeeded -
> Run bedtools_intersect on BED files with -r option
- test11 succeeded -
> Run bedtools_intersect on multiple BED files
- test12 succeeded -
> Run bedtools_intersect on GFF files
0a1
> ##gff-version 3
Files are not identical!

Can you take a look?

Hi Robrecht, I figured it out the bug I will  create a new PR.
The par_header argument is never unset in the script.sh.

@tgaspe Can you please update me on the progress?
The bug is currently in main and every CI run fails on it.

Hi, Toni.
I had addressed the bug on PR #136. (https://github.com/viash-hub/biobox/pull/136).


mylar3 request

Hey I love the themes can you make them for Mylar3 and other Headphones forks

Hey I love the themes can you make them for Mylar3 and other Headphones forks

I've started development on this.
It's available on the develop branch. So if you want to test the domain needs to be https://develop.theme-park.dev


Add automatic browser reload in dev-mode

See https://esbuild.github.io/api/#hot-reloading-css
We should create a new SSE endpoint containing the list of changes, and inject something similar to the esbuild example, directly in the code in dev mode (with a config to disable it)

We could create a specific extension for this with a SPI to allow pushing added, udpated and removed resources to the list.
With the Web-Bundler we also control the js part so we can add the EventSource automatically in dev mode.

This is done in 1.5.1


[MINOR][DOCS] fix missing field in query

What changes were proposed in this pull request?

This PR fixes sql query in doc, let the query confrom to the query result in the following
Why are the changes needed?

Just a fix to doc
Does this PR introduce any user-facing change?

No
How was this patch tested?

use project test

@redsnow1992 would you mind following https://github.com/apache/spark/pull/35624/checks?check_run_id=5300832910 to enable CI in this PR? Also let's fix PR title to reflect your change specifically, and fill the PR description.

Can one of the admins verify this patch?

@HyukjinKwon has enabled ci and adjust the pr title

I'll fix the title further. Can you add any detail in the description? there's nothing

@srowen Thx, I will add desc

@redsnow1992 would you mind rebasing it and pushing it to the PR so it can retrigger the GitHub Actions job? cc @huaxingao FYI

@HyukjinKwon ok, done

Merged to master / 3.2 / 3.1


Handle SystemVerilog modport port renaming

Latest code can't handle the below syntax:
modport Initiator
(
    input Clk,
    output Address,
    output .Dout(DInitiator), // ERROR: syntax error, unexpected '.', expecting TOK_ID
    input .Din(DTarget),
    output Access,
    output Write,
    input Ready,
    input DataReady
);

See for example but I'm not sure what this is called or where to find an official reference.

In Section 25.5.4 of IEEE 1800-2017, these are referred to as "modport expressions." While Yosys does not yet have support for these, you may have success trying out https://github.com/zachjs/sv2v. It supports even complex modport expressions, such as concatenations and slices.


Initial commit will not deploy

Have you experienced this bug with the latest version of the template?
yes
Steps to Reproduce
When I clone this project, and follow all setup instructions, the deployment happens but the healthcheck is never healthy. The prisma db call to count errors out:
The table `main.User` does not exist in the current database.

on the call to count.
I made my demo app public so you can see for yourself: https://github.com/justin-hackin/test-indie-stack
I tried many times. One time I didn't use the app name with the randomly generated string (I removed that). I assumed if the cli let me create an app, the name was as unique as it needs to be.  However, I noticed that it complained about having the wrong region set and I was able to fix it by adding primary_region = "yyz" to my config. Does the app ensure the name is globally unique as I hear is required?
this post says  create command deprecated. Could this be the cause?
Expected Behavior
The initial repo should deploy successfully after init/setup
Actual Behavior
see steps

I tried fly launch after attempting all this and it's the same problem with that too.

Although the fly launch hung on the healthcheck, when I pushed the changes, the github action was able to deploy. Sadly, I wasted many hours on this. I expected more from a supported stack with a paid subscription business behind it.

Here's what happened in the logs when the cli launch run hangs on healthcheck:
2024-03-30T22:06:49.877 app[9080e30dae94d8] yyz [info] > start

2024-03-30T22:06:49.877 app[9080e30dae94d8] yyz [info] > remix-serve ./build/index.js

2024-03-30T22:06:50.227 app[9080e30dae94d8] yyz [info] /myapp/node_modules/tiny-invariant/dist/tiny-invariant.cjs.js:10

2024-03-30T22:06:50.227 app[9080e30dae94d8] yyz [info] throw new Error(prefix);

2024-03-30T22:06:50.227 app[9080e30dae94d8] yyz [info] ^

2024-03-30T22:06:50.228 app[9080e30dae94d8] yyz [info] Error: Invariant failed

2024-03-30T22:06:50.228 app[9080e30dae94d8] yyz [info] at invariant (/myapp/node_modules/tiny-invariant/dist/tiny-invariant.cjs.js:10:15)

2024-03-30T22:06:50.228 app[9080e30dae94d8] yyz [info] at Object.<anonymous> (/myapp/build/index.js:186:35)

2024-03-30T22:06:50.228 app[9080e30dae94d8] yyz [info] at Module._compile (node:internal/modules/cjs/loader:1364:14)

2024-03-30T22:06:50.228 app[9080e30dae94d8] yyz [info] at Object.Module._extensions..js (node:internal/modules/cjs/loader:1422:10)

2024-03-30T22:06:50.228 app[9080e30dae94d8] yyz [info] at Module.load (node:internal/modules/cjs/loader:1203:32)

2024-03-30T22:06:50.228 app[9080e30dae94d8] yyz [info] at Function.Module._load (node:internal/modules/cjs/loader:1019:12)

2024-03-30T22:06:50.228 app[9080e30dae94d8] yyz [info] at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:203:29)

2024-03-30T22:06:50.228 app[9080e30dae94d8] yyz [info] at ModuleJob.run (node:internal/modules/esm/module_job:195:25)

2024-03-30T22:06:50.228 app[9080e30dae94d8] yyz [info] at ModuleLoader.import (node:internal/modules/esm/loader:337:24)

2024-03-30T22:06:50.228 app[9080e30dae94d8] yyz [info] at importModuleDynamicallyWrapper (node:internal/vm/module:432:15)

2024-03-30T22:06:50.984 app[9080e30dae94d8] yyz [info] INFO Main child exited normally with code: 1

2024-03-30T22:06:50.998 app[9080e30dae94d8] yyz [info] INFO Starting clean up.

2024-03-30T22:06:50.999 app[9080e30dae94d8] yyz [info] INFO Umounting /dev/vdb from /data

2024-03-30T22:06:51.000 app[9080e30dae94d8] yyz [info] [ 4.354386] reboot: Restarting system

2024-03-30T22:06:51.190 runner[9080e30dae94d8] yyz [info] machine has reached its max restart count (10)

So, it gets worse, although the action reported a success, the app's requests all hang indefinitely 😖 I have reproduced this in 2 different projects.

I started a discussion about this cursed process here: https://community.fly.io/t/have-you-ever-successfully-deployed-a-remix-js-app-using-the-indie-stack-whats-your-secret/19017

I had the same problem, the workaround was scaling the machine's memory
fly scale memory 1024
I fink this issue is related: #276

CC/ @rubys

guess... i'll just stand up a remix app on aws? 😅

https://fly.io/docs/js/frameworks/remix/ - seems like fly's docs are more up to date?

I've thought about porting my code again to this https://github.com/epicweb-dev/epic-stack which is pretty similar and more scaffolded, I would be curious to know if it "just works".

I'm closing this because when I was testing deploys there was a service outage with fly.io. I may have mistaken very long cold starts for the app hanging as well.


Use MUnit for testing

Btw, I managed to make all tests work on Scalatest. Do we really need to make such a huge migration?

I don't think we should make the CE3 release depend on a migration, and I think I might do this gradually, using both for a little while then a full migration later on.

I mean, if we start the migration to MUnit now, we'll have to do it in both branches - master and CE3.

I suppose it depends whether we want to maintain two versions for the differnt cats-effect versions. Otherwise I only plan on updating the tests that haven't been modified in the CE3 branch.
I'd prefer not maintaining two BTW, I think it's probably better to cut a final CE2 release, the use CE3 from there.

Let's plan the version number, e.g. 0.10.0 for the last CE2 release and make a branch for it. If we need to do a hotfix we can release it for CE2 version as 0.10.*. And the first CE3 release may be 0.11.0.


Confusing with package install logic when chain code as a service.

https://github.com/hyperledger/fabric/blob/07e6231e452f941dbc508f21e50d4897a9dd47a4/internal/peer/chaincode/install.go#L162-L199
as lines above, when  chain code as a service case, the chain code with package as
tree basic-asset
basic-asset
├── code.tar.gz
└── metadata.json

0 directories, 2 files

with usage as lines below from fabric sample:
packageChaincode() {

  address="{{.peername}}_${CC_NAME}_ccaas:${CCAAS_SERVER_PORT}"
  prefix=$(basename "$0")
  tempdir=$(mktemp -d -t "$prefix.XXXXXXXX") || error_exit "Error creating temporary directory"
  label=${CC_NAME}_${CC_VERSION}
  mkdir -p "$tempdir/src"

cat > "$tempdir/src/connection.json" <<CONN_EOF
{
  "address": "${address}",
  "dial_timeout": "10s",
  "tls_required": false
}
CONN_EOF

   mkdir -p "$tempdir/pkg"

cat << METADATA-EOF > "$tempdir/pkg/metadata.json"
{
    "type": "ccaas",
    "label": "$label"
}
METADATA-EOF

    tar -C "$tempdir/src" -czf "$tempdir/pkg/code.tar.gz" .
    tar -C "$tempdir/pkg" -czf "$CC_NAME.tar.gz" metadata.json code.tar.gz
     rm -Rf "$tempdir"

    successln "Chaincode is packaged  ${address}"

}

and
# installChaincode PEER ORG
function installChaincode() {
  ORG=$1
  setGlobals $ORG
  set -x
  echo ${CC_NAME}
  export FABRIC_LOGGING_SPEC=DEBUG
  peer lifecycle chaincode install ${CC_NAME}.tar.gz >&log.txt
  res=$?
  { set +x; } 2>/dev/null
  cat log.txt
  verifyResult $res "Chaincode installation on peer0.org${ORG} has failed"
  successln "Chaincode is installed on peer0.org${ORG}"
}

what confusing me as the tar.gz of chaincode as a service package fails as
could not unmarshal chaincode package to CDS [failed to unmarshal deployment spec from bytes]or SignedCDS [failed to unmarshal envelope from bytes] 436 ./basicj.tar.gz

so logically, as the marshal step having error, the install of chaincode as a service should be fail right?
or what's the correct steps to package chaincode as a service?
ref https://github.com/Hyperledger-TWGC/fabric-admin-sdk/pull/26

btw, can anyone help add external chaincode test case in peer install path?

btw, can anyone help add external chaincode test case in peer install path?

@SamYuan1990 let me take a look; we've known that the peer command has had some issues... @jt-nti keeps reminding us as well.
https://github.com/hyperledger-labs/weft is an alternative for packaging all types of contracts

@SamYuan1990 I just tried the fabric-samples test-network using the deployCCAAS command.  That worked out and deployed the chaincode fine... Just wondering was the peer configured correctly to use the -as-a-service builders?

@SamYuan1990 I just tried the fabric-samples test-network using the deployCCAAS command. That worked out and deployed the chaincode fine... Just wondering was the peer configured correctly to use the -as-a-service builders?

https://github.com/Hyperledger-TWGC/fabric-admin-sdk/blob/main/.github/workflows/golange2e.yml#L23-L25
if I am right, to enable -as-a-service builders with test network, we don't need any specific parameters during network.sh up right?

correct @SamYuan1990  the builders where added I think it was in Fabric 2.3.... but that workflow looks good to me.
not all the example chaincodes though have a dockerfile. So not all can be built and run by the test-network. I went with the typescript one.
./network.sh deployCCAAS -ccn basic -ccp ../asset-transfer-basic/chaincode-typescript -ccl node -ccs 1

@SamYuan1990 I just tried the fabric-samples test-network using the deployCCAAS command. That worked out and deployed the chaincode fine... Just wondering was the peer configured correctly to use the -as-a-service builders?

and what confused me is that when we upload a tar file as chaincode-as-a-service, what's happening during peer install running with the tar file.
as the tar file with tar -cxvf command can't convert to golang module during function InitFromBuffer... for SignedCDSPackage or CDSPackage.
hence from code path, seems GetCCPackage in package ccprovider will exit with error.
could not unmarshal chaincode package to CDS [failed to unmarshal deployment spec from bytes]or SignedCDS [failed to unmarshal envelope from bytes] 436 ./basicj.tar.gz

but in fact, it's not.(as fabric sample)
hence it looks wired, as I trace the code with path below:
https://github.com/hyperledger/fabric/blob/main/internal/peer/chaincode/install.go#L120
https://github.com/hyperledger/fabric/blob/e8c6102cc38d835dd6f3efe7b90a2f1133d21a68/internal/peer/chaincode/install.go#L162
https://github.com/hyperledger/fabric/blob/e8c6102cc38d835dd6f3efe7b90a2f1133d21a68/internal/peer/chaincode/install.go#L164
https://github.com/hyperledger/fabric/blob/e8c6102cc38d835dd6f3efe7b90a2f1133d21a68/internal/peer/chaincode/install.go#L179
https://github.com/hyperledger/fabric/blob/e8c6102cc38d835dd6f3efe7b90a2f1133d21a68/internal/peer/chaincode/install.go#L242
i.Input.PackageFile is the tar file, which not following SignedCDSPackage or CDSPackage format cause
ccpack, err := ccprovider.GetCCPackage(ccPkgBytes, cryptoProvider)

return error.
or for tar file as chaincode as a service, we have a specific path as implementation?
I also try to find a sample from test code, but seems this path is not covered.
https://github.com/hyperledger/fabric/blob/e8c6102cc38d835dd6f3efe7b90a2f1133d21a68/internal/peer/chaincode/install_test.go

correct @SamYuan1990 the builders where added I think it was in Fabric 2.3.... but that workflow looks good to me.
not all the example chaincodes though have a dockerfile. So not all can be built and run by the test-network. I went with the typescript one.
./network.sh deployCCAAS -ccn basic -ccp ../asset-transfer-basic/chaincode-typescript -ccl node -ccs 1

yes, @mbwhite , I just confused with the path above, and if path above is correct, then how a tar file with structure below
yuanyi@yuanyideMacBook-Pro e2e % tree basicj
basicj
├── code.tar.gz
└── metadata.json

works with
https://github.com/hyperledger/fabric/blob/e8c6102cc38d835dd6f3efe7b90a2f1133d21a68/core/common/ccprovider/cdspackage.go#L212
or
https://github.com/hyperledger/fabric/blob/e8c6102cc38d835dd6f3efe7b90a2f1133d21a68/core/common/ccprovider/sigcdspackage.go#L256

https://github.com/hyperledger/fabric/blob/7785a62aae7323560f0ece31fe8509ebffec2398/internal/peer/lifecycle/chaincode/install.go#L180
I suppose I found where the different between release 2.4 and main branch for the path.
basicj.tar.gz
basicj.tar.gz is from my local running result of chaincode as a service from fabric sample
basic-asset.tar.gz
basic-asset.tar.gz is the one I generated from admin-sdk project.
@mbwhite , let's further investigation and keep in touch.

hi @mbwhite , after switch to release-2.4 way of implementation, admin-sdk part code successful.

oh @mbwhite , I see, there is a "install" under peer/chaincode, and another one under peer/lifecycle/chaincode

Hi @SamYuan1990 ... the peer/chaincode is for the old lifecycle - and at some point will be removed. So for ccaas the peer lifecycle chaincode should be used.
There shouldn't be any needs for the code to go anywhere near the CDS handling - it should check for the builders that are installed. Match up the type specified in the package with the correct builder.
If there's no builder available, it will fail.
Does that answer the question?

Hi @SamYuan1990 ... the peer/chaincode is for the old lifecycle - and at some point will be removed. So for ccaas the peer lifecycle chaincode should be used.
There shouldn't be any needs for the code to go anywhere near the CDS handling - it should check for the builders that are installed. Match up the type specified in the package with the correct builder.
If there's no builder available, it will fail.
Does that answer the question?

yes, this one answer the question.


Create offline page for widget testing/development

After few hours with this plugin I see huge bottleneck: Discourse environment. There should also some communication layer that would be substituted with an adapter for offline testing.
Something example: https://github.com/gamedevpl/gamedev-chat/tree/master/tests

simple nodejs server
adapter code substitutes production code

This will be extremely useful for working on UI/UX. It will also help with running tests for UI.

While I think this is a good idea, it's not something I'm going to invest time into, so unless someone else feels like they want to take ownership of this, I'm going to close for now.


出现错误

DEBUG:httpx:load_ssl_context verify=True cert=None trust_env=True http2=False
DEBUG:httpx:load_verify_locations cafile='/usr/local/lib/python3.10/dist-packages/certifi/cacert.pem'
DEBUG:httpcore.connection:connect_tcp.started host='api.poe.com' port=443 local_address=None timeout=600 socket_options=None
DEBUG:httpcore.connection:connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fbeb99f3280>
DEBUG:httpcore.connection:start_tls.started ssl_context=<ssl.SSLContext object at 0x7fbeb9a34840> server_hostname='api.poe.com' timeout=600
DEBUG:httpcore.connection:start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fbeb983ca60>
DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>
DEBUG:httpcore.http11:send_request_headers.complete
DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>
DEBUG:httpcore.http11:send_request_body.complete
DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>
DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 03 Aug 2024 13:44:21 GMT'), (b'Content-Type', b'text/event-stream'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'nginx'), (b'Cache-Control', b'no-cache'), (b'X-Q-Stat', b',635c8881c01368b1d492d768f9686448,<IP_ADDRESS>,17446,<IP_ADDRESS>,,897557846622,1,1722692661.411,0.005,,.,0,0,0.000,0.004,-,0,0,223,193,96,10,35796,,,,,,-,'), (b'Strict-Transport-Security', b'max-age=63072000; includeSubDomains; preload')])
INFO:httpx:HTTP Request: POST https://api.poe.com/bot/GPT-4o "HTTP/1.1 200 OK"
DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>
DEBUG:httpcore.http11:response_closed.started
DEBUG:httpcore.http11:response_closed.complete
Error in Poe bot: Bot request to GPT-4o failed on try 0
 BotError('{"allow_retry": true, "text": "Internal server error (error_id: a0123ebe-8f32-4a76-8fc4-c8b8f7451434)"}')
DEBUG:httpcore.http11:receive_response_body.failed exception=GeneratorExit()
DEBUG:httpcore.connection:connect_tcp.started host='api.poe.com' port=443 local_address=None timeout=600 socket_options=None
DEBUG:httpcore.connection:connect_tcp.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fbeb987e410>
DEBUG:httpcore.connection:start_tls.started ssl_context=<ssl.SSLContext object at 0x7fbeb9a34840> server_hostname='api.poe.com' timeout=600
DEBUG:httpcore.connection:start_tls.complete return_value=<httpcore._backends.anyio.AnyIOStream object at 0x7fbeb983f4c0>
DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>
DEBUG:httpcore.http11:send_request_headers.complete
DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>
DEBUG:httpcore.http11:send_request_body.complete
DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>
DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 03 Aug 2024 13:44:22 GMT'), (b'Content-Type', b'text/event-stream'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'nginx'), (b'Cache-Control', b'no-cache'), (b'X-Q-Stat', b',a68de8241ae02066a3351e62f676e665,<IP_ADDRESS>,51084,<IP_ADDRESS>,,897557856258,1,1722692662.219,0.004,,.,0,0,0.000,0.004,-,0,0,223,811,405,10,35796,,,,,,-,'), (b'Strict-Transport-Security', b'max-age=63072000; includeSubDomains; preload')])
INFO:httpx:HTTP Request: POST https://api.poe.com/bot/GPT-4o "HTTP/1.1 200 OK"
DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>
DEBUG:httpcore.http11:response_closed.started
DEBUG:httpcore.http11:response_closed.complete
Error in Poe bot: Bot request to GPT-4o failed on try 1
 BotError('{"allow_retry": true, "text": "Internal server error (error_id: 150713e9-d9ca-4c1a-a0a6-1a1b9ff2fac4)"}')
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/starlette/responses.py", line 264, in __call__
    await wrap(partial(self.listen_for_disconnect, receive))
  File "/usr/local/lib/python3.10/dist-packages/starlette/responses.py", line 260, in wrap
    await func()
  File "/usr/local/lib/python3.10/dist-packages/starlette/responses.py", line 237, in listen_for_disconnect
    message = await receive()
  File "/usr/local/lib/python3.10/dist-packages/uvicorn/protocols/http/h11_impl.py", line 542, in receive
    await self.message_event.wait()
  File "/usr/lib/python3.10/asyncio/locks.py", line 214, in wait
    await fut
asyncio.exceptions.CancelledError: Cancelled by cancel scope 7fbeb99f39d0

During handling of the above exception, another exception occurred:

  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.10/dist-packages/uvicorn/protocols/http/h11_impl.py", line 412, in run_asgi
  |     result = await app(  # type: ignore[func-returns-value]
  |   File "/usr/local/lib/python3.10/dist-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
  |     return await self.app(scope, receive, send)
  |   File "/usr/local/lib/python3.10/dist-packages/fastapi/applications.py", line 1054, in __call__
  |     await super().__call__(scope, receive, send)
  |   File "/usr/local/lib/python3.10/dist-packages/starlette/applications.py", line 123, in __call__
  |     await self.middleware_stack(scope, receive, send)
  |   File "/usr/local/lib/python3.10/dist-packages/starlette/middleware/errors.py", line 186, in __call__
  |     raise exc
  |   File "/usr/local/lib/python3.10/dist-packages/starlette/middleware/errors.py", line 164, in __call__
  |     await self.app(scope, receive, _send)
  |   File "/usr/local/lib/python3.10/dist-packages/starlette/middleware/exceptions.py", line 62, in __call__
  |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  |   File "/usr/local/lib/python3.10/dist-packages/starlette/_exception_handler.py", line 64, in wrapped_app
  |     raise exc
  |   File "/usr/local/lib/python3.10/dist-packages/starlette/_exception_handler.py", line 53, in wrapped_app
  |     await app(scope, receive, sender)
  |   File "/usr/local/lib/python3.10/dist-packages/starlette/routing.py", line 758, in __call__
  |     await self.middleware_stack(scope, receive, send)
  |   File "/usr/local/lib/python3.10/dist-packages/starlette/routing.py", line 778, in app
  |     await route.handle(scope, receive, send)
  |   File "/usr/local/lib/python3.10/dist-packages/starlette/routing.py", line 299, in handle
  |     await self.app(scope, receive, send)
  |   File "/usr/local/lib/python3.10/dist-packages/starlette/routing.py", line 79, in app
  |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  |   File "/usr/local/lib/python3.10/dist-packages/starlette/_exception_handler.py", line 64, in wrapped_app
  |     raise exc
  |   File "/usr/local/lib/python3.10/dist-packages/starlette/_exception_handler.py", line 53, in wrapped_app
  |     await app(scope, receive, sender)
  |   File "/usr/local/lib/python3.10/dist-packages/starlette/routing.py", line 77, in app
  |     await response(scope, receive, send)
  |   File "/usr/local/lib/python3.10/dist-packages/starlette/responses.py", line 257, in __call__
  |     async with anyio.create_task_group() as task_group:
  |   File "/usr/local/lib/python3.10/dist-packages/anyio/_backends/_asyncio.py", line 678, in __aexit__
  |     raise BaseExceptionGroup(
  | exceptiongroup.ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.10/dist-packages/starlette/responses.py", line 260, in wrap
    |     await func()
    |   File "/usr/local/lib/python3.10/dist-packages/starlette/responses.py", line 249, in stream_response
    |     async for chunk in self.body_iterator:
    |   File "/root/poe-to-openai/route_chat.py", line 71, in process_openai_response_event_stream
    |     async for result in poe_api.stream_get_responses(token, messages, model):
    |   File "/root/poe-to-openai/poe_api.py", line 44, in stream_get_responses
    |     async for partial in get_bot_response(messages=messages, bot_name=bot_name, api_key=api_key,
    |   File "/usr/local/lib/python3.10/dist-packages/fastapi_poe/client.py", line 350, in stream_request
    |     async for message in stream_request_base(
    |   File "/usr/local/lib/python3.10/dist-packages/fastapi_poe/client.py", line 483, in stream_request_base
    |     async for message in ctx.perform_query_request(
    |   File "/usr/local/lib/python3.10/dist-packages/fastapi_poe/client.py", line 229, in perform_query_request
    |     raise BotError(event.data)
    | fastapi_poe.client.BotError: {"allow_retry": true, "text": "Internal server error (error_id: 150713e9-d9ca-4c1a-a0a6-1a1b9ff2fac4)"}
    +------------------------------------
DEBUG:httpcore.http11:receive_response_body.failed exception=GeneratorExit()

8.3中午之后无法使用，报错如上

好了

INFO:     <IP_ADDRESS>:0 - "POST /v1/chat/completions HTTP/1.1" 500 Internal Server Error
ERROR:    Exception in ASGI application

Exception Group Traceback (most recent call last):
|   File "/usr/local/lib/python3.11/dist-packages/starlette/_utils.py", line 87, in collapse_excgroups
|     yield
|   File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/base.py", line 190, in call
|     async with anyio.create_task_group() as task_group:
|   File "/usr/local/lib/python3.11/dist-packages/anyio/_backends/_asyncio.py", line 678, in aexit
|     raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
|   File "/usr/local/lib/python3.11/dist-packages/uvicorn/protocols/http/h11_impl.py", line 412, in run_asgi
|     result = await app(  # type: ignore[func-returns-value]
|              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|   File "/usr/local/lib/python3.11/dist-packages/uvicorn/middleware/proxy_headers.py", line 84, in call
|     return await self.app(scope, receive, send)
|            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|   File "/usr/local/lib/python3.11/dist-packages/fastapi/applications.py", line 1054, in call
|     await super().call(scope, receive, send)
|   File "/usr/local/lib/python3.11/dist-packages/starlette/applications.py", line 123, in call
|     await self.middleware_stack(scope, receive, send)
|   File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/errors.py", line 186, in call
|     raise exc
|   File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/errors.py", line 164, in call
|     await self.app(scope, receive, _send)
|   File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/base.py", line 189, in call
|     with collapse_excgroups():
|   File "/usr/lib/python3.11/contextlib.py", line 155, in exit
|     self.gen.throw(typ, value, traceback)
|   File "/usr/local/lib/python3.11/dist-packages/starlette/_utils.py", line 93, in collapse_excgroups
|     raise exc
|   File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/base.py", line 191, in call
|     response = await self.dispatch_func(request, call_next)
|                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|   File "/var/www/poe_2_openai/main.py", line 23, in dispatch
|     response = await call_next(request)
|                ^^^^^^^^^^^^^^^^^^^^^^^^
|   File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/base.py", line 165, in call_next
|     raise app_exc
|   File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/base.py", line 151, in coro
|     await self.app(scope, receive_or_disconnect, send_no_error)
|   File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/exceptions.py", line 62, in call
|     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
|   File "/usr/local/lib/python3.11/dist-packages/starlette/_exception_handler.py", line 64, in wrapped_app
|     raise exc
|   File "/usr/local/lib/python3.11/dist-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|     await app(scope, receive, sender)
|   File "/usr/local/lib/python3.11/dist-packages/starlette/routing.py", line 758, in call
|     await self.middleware_stack(scope, receive, send)
|   File "/usr/local/lib/python3.11/dist-packages/starlette/routing.py", line 778, in app
|     await route.handle(scope, receive, send)
|   File "/usr/local/lib/python3.11/dist-packages/starlette/routing.py", line 299, in handle
|     await self.app(scope, receive, send)
|   File "/usr/local/lib/python3.11/dist-packages/starlette/routing.py", line 79, in app
|     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
|   File "/usr/local/lib/python3.11/dist-packages/starlette/_exception_handler.py", line 64, in wrapped_app
|     raise exc
|   File "/usr/local/lib/python3.11/dist-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|     await app(scope, receive, sender)
|   File "/usr/local/lib/python3.11/dist-packages/starlette/routing.py", line 74, in app
|     response = await func(request)
|                ^^^^^^^^^^^^^^^^^^^
|   File "/usr/local/lib/python3.11/dist-packages/fastapi/routing.py", line 299, in app
|     raise e
|   File "/usr/local/lib/python3.11/dist-packages/fastapi/routing.py", line 294, in app
|     raw_response = await run_endpoint_function(
|                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|   File "/usr/local/lib/python3.11/dist-packages/fastapi/routing.py", line 191, in run_endpoint_function
|     return await dependant.call(**values)
|            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|   File "/var/www/poe_2_openai/route/route_chat.py", line 39, in chat_proxy
|     return await default_response(model, messages, token)
|            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|   File "/var/www/poe_2_openai/route/route_chat.py", line 100, in default_response
|     result = await poe_api.get_responses(token, messages, model)
|              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|   File "/var/www/poe_2_openai/api/poe_api.py", line 19, in get_responses
|     bot_name = get_bot(bot)
|                ^^^^^^^^^^^^
|   File "/var/www/poe_2_openai/api/poe_api.py", line 62, in get_bot
|     model_mapping = json.loads(os.environ.get("MODEL_MAPPING", "{}"))
|                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|   File "/usr/lib/python3.11/json/init.py", line 346, in loads
|     return _default_decoder.decode(s)
|            ^^^^^^^^^^^^^^^^^^^^^^^^^^
|   File "/usr/lib/python3.11/json/decoder.py", line 337, in decode
|     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
|                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|   File "/usr/lib/python3.11/json/decoder.py", line 353, in raw_decode
|     obj, end = self.scan_once(s, idx)
|                ^^^^^^^^^^^^^^^^^^^^^^
| json.decoder.JSONDecodeError: Expecting ':' delimiter: line 6 column 24 (char 167)
+------------------------------------

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/uvicorn/protocols/http/h11_impl.py", line 412, in run_asgi
result = await app(  # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/uvicorn/middleware/proxy_headers.py", line 84, in call
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/fastapi/applications.py", line 1054, in call
await super().call(scope, receive, send)
File "/usr/local/lib/python3.11/dist-packages/starlette/applications.py", line 123, in call
await self.middleware_stack(scope, receive, send)
File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/errors.py", line 186, in call
raise exc
File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/errors.py", line 164, in call
await self.app(scope, receive, _send)
File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/base.py", line 189, in call
with collapse_excgroups():
File "/usr/lib/python3.11/contextlib.py", line 155, in exit
self.gen.throw(typ, value, traceback)
File "/usr/local/lib/python3.11/dist-packages/starlette/_utils.py", line 93, in collapse_excgroups
raise exc
File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/base.py", line 191, in call
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/poe_2_openai/main.py", line 23, in dispatch
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/base.py", line 165, in call_next
raise app_exc
File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/base.py", line 151, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/usr/local/lib/python3.11/dist-packages/starlette/middleware/exceptions.py", line 62, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/usr/local/lib/python3.11/dist-packages/starlette/_exception_handler.py", line 64, in wrapped_app
raise exc
File "/usr/local/lib/python3.11/dist-packages/starlette/_exception_handler.py", line 53, in wrapped_app
await app(scope, receive, sender)
File "/usr/local/lib/python3.11/dist-packages/starlette/routing.py", line 758, in call
await self.middleware_stack(scope, receive, send)
File "/usr/local/lib/python3.11/dist-packages/starlette/routing.py", line 778, in app
await route.handle(scope, receive, send)
File "/usr/local/lib/python3.11/dist-packages/starlette/routing.py", line 299, in handle
await self.app(scope, receive, send)
File "/usr/local/lib/python3.11/dist-packages/starlette/routing.py", line 79, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/usr/local/lib/python3.11/dist-packages/starlette/_exception_handler.py", line 64, in wrapped_app
raise exc
File "/usr/local/lib/python3.11/dist-packages/starlette/_exception_handler.py", line 53, in wrapped_app
await app(scope, receive, sender)
File "/usr/local/lib/python3.11/dist-packages/starlette/routing.py", line 74, in app
response = await func(request)
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/fastapi/routing.py", line 299, in app
raise e
File "/usr/local/lib/python3.11/dist-packages/fastapi/routing.py", line 294, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/fastapi/routing.py", line 191, in run_endpoint_function
return await dependant.call(**values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/poe_2_openai/route/route_chat.py", line 39, in chat_proxy
return await default_response(model, messages, token)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/poe_2_openai/route/route_chat.py", line 100, in default_response
result = await poe_api.get_responses(token, messages, model)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/poe_2_openai/api/poe_api.py", line 19, in get_responses
bot_name = get_bot(bot)
^^^^^^^^^^^^
File "/var/www/poe_2_openai/api/poe_api.py", line 62, in get_bot
model_mapping = json.loads(os.environ.get("MODEL_MAPPING", "{}"))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/json/init.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/json/decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
^^^^^^^^^^^^^^^^^^^^^^
json.decoder.JSONDecodeError: Expecting ':' delimiter: line 6 column 24 (char 167)


feat(headless): add debug controller

https://coveord.atlassian.net/browse/SFINT-3843
This PR adds a Debug controller allowing to enable/disable the debug flag. This flag is already used for search, but we'll also use it for Case Assist and User Actions to retrieve debug information from the API calls.

We already have the RelevanceInspector controller, which currently only works with the Search for its state, @samisayegh discussed adapting the controller to other APIs. It's more complete, since it gives you the ability to view the content of the debug output, parsed in a useful manner.
This controller is a tad "too simple" IMO. I'm not fully aware of your use case, but would something like a "case assist debugger" be more complete?

We already have the RelevanceInspector controller, which currently only works with the Search for its state, @samisayegh discussed adapting the controller to other APIs. It's more complete, since it gives you the ability to view the content of the debug output, parsed in a useful manner.
This controller is a tad "too simple" IMO. I'm not fully aware of your use case, but would something like a "case assist debugger" be more complete?

@ThibodeauJF

This controller is a tad "too simple" IMO. I'm not fully aware of your use case, but would something like a "case assist debugger" be more complete?

In the short term, we don't plan on offering a visual debugger component. The goal of this controller is simply to allow a customer to turn on the debug mode, and get the debug information from the network requests. In fact, we think it will be used mostly during development of a customer implementation.
Looking at the debug state, actions, and slice, I thought that the debug flag was meant to be global, and that by activating it, debugging should be triggered for any component/controller supporting it.
For case assist and user actions we'll need to pass that debug flag to many different API calls, split over multiple controllers. I feel having separate debug flags for each call would be quite redundant.
Any thoughts?

@nathanlb

But i'm curious how you envision we should use this in one of the ui libraries. Is this controller attached to a dedicated debug web component or is an instance of the controller created and managed in an higher-level wrapper component?

I am actually using a dedicated component to call the controller. However, this really depends on the customer's implementation. In a real life scenario, you don't want a Debug button in the user interface. You will most likely define an attribute on your Case Assist app component and set it either manually, or as a designer property.

I feel like the presence of this controller (and even RelevanceInspector) is a little bit confusing given that most controllers are meant for visual components.
Given that this isn't meant to be used by most developers, I feel like using actions may be enough.

Could it be set globally in the engine configuration options?

I would be tempted to tell you to use an action since it's very straight forward here, it's a lot of additional code for little abstraction. If we keep it, the Relevance inspector should be composed of the Debug Controller instead of duplicating the state & methods, a bit like the QuerySummary & ResultList use the SearchStatus

@ThibodeauJF

I would be tempted to tell you to use an action since it's very straight forward here,

My understanding was that customer implementations should rely on controller. Dispatching headless actions from a custom implementation feels like calling an internal member of the library.
Now, if you say it is expected that customers dispatch actions from their custom code, then the debug controller is not required anymore.

@ThibodeauJF

I would be tempted to tell you to use an action since it's very straight forward here,

My understanding was that customer implementations should rely on controller. Dispatching headless actions from a custom implementation feels like calling an internal member of the library.
Now, if you say it is expected that customers dispatch actions from their custom code, then the debug controller is not required anymore.

The way I saw it is that we use controllers for anything common or complex.


Invalid Notebook (overviews/AndreMachado/main.ipynb)

The notebook is invalid and is missing an expected key: metadata. Using nbformat v5.8.0 and nbconvert v7.2.7.

@AndrePauloFM, can you help investigate and fix this issue?

This issue was resolved with the PR #82.


fix formatting for initial npm init invocation

@sbohlen,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


[feature request] Please add support for Timestamp nanoseconds

Currently most methods in amazon.ion.Timestamp are created with millisecond precision, i.e.
    public static Timestamp now()
    {
        long millis = System.currentTimeMillis();
        return new Timestamp(millis, UNKNOWN_OFFSET);
    }

It doesn't look like there's an easy way to specify nanosecond precision on a timestamp, or expand out the _fraction field.  The only thing that mentions nanoseconds is the SQL timestamp conversion:
public static Timestamp forSqlTimestampZ(java.sql.Timestamp sqlTimestamp)
    {
        if (sqlTimestamp == null) return null;

        long millis = sqlTimestamp.getTime();
        Timestamp ts = new Timestamp(millis, UTC_OFFSET);
        int nanos = sqlTimestamp.getNanos();
        BigDecimal frac = BigDecimal.valueOf(nanos).movePointLeft(9);
        ts._fraction = frac;
        return ts;
    }

which is nice but seems seems a bit arbitrary.  At the very least I should be able to pass in the components of an Instant and be able to construct a matching timestamp that way.
Likewise, the timestamp tests are only accurate to the millisecond, with the nanosecond test involving an SQL timestamp:
https://github.com/amzn/ion-java/blob/d5939190808b815ec940ef5d45db0d39e9c3fb63/test/com/amazon/ion/TimestampTest.java#L1374

This is related to https://github.com/amzn/ion-java/issues/266 which is about converting a Timestamp to an Instant.

It does seem like it's possible to do using Timestamp.valueOf:
Timestamp expectedTsMillisWithNanosPrecision =            Timestamp.valueOf("1677-09-21T00:12:43.145000000Z");

But that still involves converting an Instant to a String and then back again.

And it's also possible for
Timestamp.forMillis(new BigDecimal("-9223372036854.775808"), UTC_OFFSET);

Which is closer but still involves instantiating a string instead of passing through, so I can't do
Timestamp.fromInstant(millis, fractional);

The following overload of Timestamp.forSecond() can be invoked to instantiate a Timestamp with arbitrary precision.
https://github.com/amzn/ion-java/blob/b6842d54245fdef9366236856130d9cb086b6f37/src/com/amazon/ion/Timestamp.java#L1313-L1315
Is there a reason this won't work?

It's the same issue as Timestamp.forMillis -- there's no facility to pass in an arbitrary fraction of a second in there, so the BigDecimal has to be cobbled together out of Instant.

What's the precision of the "fraction" in your example?  I assume the precision is "second" and that the value would have to be constrained to be less than 1 and greater than or equal to 0.

Ideally, arbitrary precision using BigDecimal#getScale().  You could specify millis, micros or nanos.

Just tried it and got an exception, because Instant doesn't have chrono values.  It literally doesn't know what the year is, only what the seconds and nanos are.
Instant now = Instant.now();
Timestamp fromSeconds = Timestamp.forSecond(now.get(ChronoField.YEAR),
                now.get(ChronoField.MONTH_OF_YEAR),
                now.get(ChronoField.DAY_OF_MONTH),
                now.get(ChronoField.HOUR_OF_DAY),
                now.get(ChronoField.MINUTE_OF_HOUR),
                now.get(ChronoField.NANO_OF_SECOND) / 1000000,
                Timestamp.UTC_OFFSET);

yields
Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: Year
	at java.base/java.time.Instant.get(Instant.java:566)
	at example.Main.writeObject(Main.java:47)
	at example.Main.main(Main.java:29)

The ideal situation is if ion-java had a timestamp implementation that added https://github.com/caplin/nanotime/ and then you could run with nanosec precision in Java 5 if you felt like.
Some interesting reading...

http://stas-blogspot.blogspot.com/2012/02/what-is-behind-systemnanotime.html
https://transficc.com/news/2016/time-nano-second-precision-in-java
https://www.javaadvent.com/2019/12/measuring-time-from-java-to-kernel-and-back.html

I'm pretty sure we can't add additional dependencies due to downstream impacts.  I'm looking at how we might create a Timestamp.forEpochSecond function similar to Instant.ofEpochSecond.  I'm not yet certain if this is the right approach tho.

The integration between JNI and Instant is neat tho:
    @Override
    public Instant instant() {
        long time = clock_gettime();

        // Decode the long, the first 32 bits are the seconds since epoch,
        // and the other 32 bits are the nanoseconds.
        return Instant.ofEpochSecond( time >> 32, time & 0xFFFFFFFFL);
    }

@wsargent can you look at https://github.com/amzn/ion-java/pull/302 and see if it meets your needs?

#302 merged


Compatibility with frontier

Hello everyone,
I'm trying to install this pallet at frontier: https://github.com/paritytech/frontier, but I have problem of versions.
Is there any manual to install the validator-set at frontier?
Thank you!

Please use the frontier branch to use this pallet with the current frontier build. This is a stop-gap solution while frontier is being updated to the latest Substrate tag/release. After that, you can just use the master or latest tag of this pallet.
https://github.com/gautamdhameja/substrate-validator-set/tree/frontier

https://github.com/NukeManDan/frontier-template-with-validator-set/blob/main/utils/testnet-instructions.md
This separate repo is a working frontier template with the validator set pallet included, and this file is instructions on use based on the demo video in the pallet README in this repo.
I must mention that we will not maintain this repo, and it is only a stop-gap solution to get you started with a working base frontier node plus the pallet here.


[AppCollection/KTable] Only emit a search value on AppCollection@change when KTable:search-input is set

Description
There are times when you are not using KTables searching functionality but instead something else (for example KFilterBar). Even though you are not using KTables search, it will still emit an empty or undefined value for search whenever you change the page, wiping out any search property that has been added by KFilterBar.
I am guessing we can intercept KTables emitting within AppCollection and only passthrough the search property if KTable/AppCollection:search-input is actually set.
This would make it easier to implement any more custom search functionality with less surprises for anyone doing that.

Still relevant I believe

We remove the s search query inside AppCollection back in https://github.com/kumahq/kuma-gui/pull/1493/files#diff-97bc6cd40e1fca51a1e241ad46d3046f7f2b245842eccd628ed7f07c0e1e1368L16 so closing this one.

There are times when you are not using KTables searching functionality but instead something else

I don't think we ever use KTables search functionality anymore.


Instances for exceptions classes

Since the Actor monad is basically a ReaderT, do you think it'd be possible to add instances for exception's MonadThrow, MonadCatch and MonadMask? Of course, exception handling ought to be handled a bit different in an actor-style architecture, but being able to use bracket (and similar) to manage resources is quite important nonetheless.
As an example, currently I don't believe it's possible to write an actor which uses network-simple's listen and accept, to then cast any new client socket to some manager actor.

My bad, using liftIO and withRunInIO, it is possible to use catch and whatnot, and hence achieve what I was after, but it feels a bit complicated v.s. having MonadCatch etc. available.

I prefer to keep a minimal dependency footprint. The unliftio package handles most of the standard-library-ish combinators like bracket, catch, async, etc. And for libraries like network-simple, it's possible to define orphan Monad{Throw,Catch,Mask} instances for Actor via the underlying ReaderT.
Also, drama is mostly a toy/experimental library right now; there's lots of stuff which is missing or incorrect. I wouldn't use it for anything serious.
That said, I'll consider depending on exceptions in the future.

Well, unliftio uses/depends on safe-exceptions, which pulls in exceptions anyway (it uses the very same Monad{Throw,Catch,Mask} classes), so there wouldn't really be an extra dependency, only an extra direct dependency :wink:
Sure, and orphan instance can be created (that's what I do right now), but I prefer to avoid those whenever possible.

drama depends on unliftio-core (contains just the MonadUnliftIO type class), not unliftio (contains lots of standard library stuff).

:facepalm:


Feature request: see posts I upvoted

HN on web allows me to see eveything I upvoted using this: https://news.ycombinator.com/upvoted?id=<user_id>

As far as I can remember the API doesn't provide that functionality.
So the only way to do that would be to parse HTML which has it's own troubles.

Yeah I think so too, however the HTML parsing is not necessarily crazy hard. For the short lived Nitter integration I wrote a class to do this which worked well so I think this issue should stay open.


Enable h3 in some CONNECT tests

Commit Message: Enable more CONNECT for HTTP/3
Additional Description: There will be followup PRs to enable remaining tests, but I'd like to land this one to minimize merge conflicts.
Risk Level: Low
Testing: Yes
Docs Changes: No
Release Notes: None
Platform Specific Features: None

/assign @alyssawilk

looks like DCO needs a fix?

@alyssawilk sorry about the test noise, I forgot to test with --//bazel:http3=False. That should be fixed now.
However, the TSAN failure seems to be due to a timeout: tcp_tunneling_integration_test is incredibly slow (prior to this PR), and this PR makes it slower by adding HTTP/3 to the protocols under test. That slowness makes it tip over the timeout threshold when under TSAN. Is the Envoy usual solution to increase test timeouts, to split it into multiple test files, or to disable some of these tests under TSAN?
I'll look into adding a config knob to disable CONNECT with HTTP/3, though I don't think we have a test for that anywhere in h1 or h2, and I don't think we have a knob for it in h1. The test that we do have is DownstreamProtocolIntegrationTest.ConnectStreamRejection but that's more a test of the override_stream_error_on_invalid_http_message config knob, and it's disabled for h1. Any thoughts?

Also of the tests I mentioned you need to turn up ConnectIsBlocked as a part of this PR to make sure connect doesn't work when not configured. Having it default on for H3 when it's default disallowed for H2 and H1 could allow a smuggling attack for folks playing around, and I don't think it's something we should allow even in alpha.

I'll look into adding a config knob to disable CONNECT with HTTP/3, though I don't think we have a test for that anywhere in h1 or h2, and I don't think we have a knob for it in h1. The test that we do have is DownstreamProtocolIntegrationTest.ConnectStreamRejection but that's more a test of the override_stream_error_on_invalid_http_message config knob, and it's disabled for h1. Any thoughts?

As said, ConnectIsBlocked verifies CONNECT doesn't work unless configured
If the tsan test is taking too long due to adding more tests, feel free to shard it out!
/wait

I pushed to check if the timeout is resolved, but I haven't yet added the new config knob.
/wait

I pushed to check if the timeout is resolved, but I haven't yet added the new config knob.
/wait

I'm going to tag Ryan for reviews while I'm out - if you get his LGTM you can /assign snowp or mattklein123 for maintainer pass!

(ryan, this is waiting on config so no action now, just making sure I don't forget to triage later today!)

(adding comment to keep PR open)

(adding comment to keep PR open)


missing certificate url

I'm submitting a...

[x] Bug report
[ ] Feature request
[ ] Documentation issue or request
[ ] Other... Please describe:

Expected Behavior
Deploy alexa skill on my webserver.
Current Behavior
I added const Webhook = require('jovo-framework').WebhookVerified; on the index.js and my host return this error:

{"status":"failure","reason":"missing certificate url"}

Error log
certUrl = req.headers.signaturecertchainurl  This return undefined on alexa-verifier-middleware
Your Environment

Jovo Framework version used: 1.2.2
Operating System: Linux Server

same issue. Any updates on this?

Not yet.

So,
require('jovo-framework').Webhook works for dialogflow but not alexa.
Now, i am struggling in running my endpoint on alexa. Btw, i am using heroku for hosting the endpoint and not AWS lamda.
Any help is much appreciated

@aswetlow @jankoenig
Issue still persist:
Repro steps:

I am using heroku free dyno as mentioned in this doc https://www.jovo.tech/blog/deploy-to-heroku/
In alexa skill endpoint section i have selected "My development endpoint is a sub-domain of a domain that has a wildcard certificate from a certificate authority"

I am guessing its something related to server certificate settings. Please help

I just took out the middleware and simply used Webhook.post that solved the problem.
btw while setting up endpoint i need to select the subdomain has the ssl certificates

I guess a documentation updation is needed on the jovo website to make it more clear.

Did you get Amazon to accept it by posting the skill? Could you pass the code fragment?

Hey! I just ran the Functional Test on the Alexa Skills Kit with the following code:  (deployed on Heroku)
const {WebhookVerified, Webhook} = require('jovo-framework');
const {app} = require('./app/app.js');

// =================================================================================
// Server Configuration
// =================================================================================

if (app.isWebhook()) {
    const port = process.env.PORT || 3000;
    Webhook.listen(port, () => {
        console.log(`Example server listening on port ${port}!`);
    });
    Webhook.post('/webhook', (req, res) => {
        console.log(req.headers);

        app.handleWebhook(req, res);
    });

}

I got this result:

After chaniging to the WebhookVerfied, I got zero errors:
const {WebhookVerified, Webhook} = require('jovo-framework');
const {app} = require('./app/app.js');

// =================================================================================
// Server Configuration
// =================================================================================

if (app.isWebhook()) {
    const port = process.env.PORT || 3000;
    WebhookVerified.listen(port, () => {
        console.log(`Example server listening on port ${port}!`);
    });
    WebhookVerified.post('/webhook', (req, res) => {
        console.log(req.headers);

        app.handleWebhook(req, res);
    });
}

@JMorell
That should be accepted by Amazon.

@aswetlow yes, It works, thanks!


Add AMP for validation, prediction and testing

What does this PR do?

Fixes #<issue_number>
Before submitting

[ ] Was this discussed/approved via a GitHub issue? (not for typos and docs)
[ ] Did you read the contributor guideline, Pull Request section?
[ ] Did you make sure your PR does only one thing, instead of bundling different changes together?
[ ] Did you make sure to update the documentation with your changes? (if necessary)
[ ] Did you write any new necessary tests? (not for typos and docs)
[ ] Did you verify new and existing tests pass locally with your changes?
[ ] Did you update the CHANGELOG? (not for typos, docs, test updates, or internal minor changes/refactorings)

PR review
Anyone in the community is free to review the PR once the tests have passed.
Before you start reviewing make sure you have read Review guidelines. In short, see the following bullet-list:

[ ] Is this pull request ready for review? (if not, please submit in draft mode)
[ ] Check that all items from Before submitting are resolved
[ ] Make sure the title is self-explanatory and the description concisely explains the PR
[ ] Add labels and milestones (and optionally projects) to the PR so it can be classified

Did you have fun?
Make sure you had fun coding 🙃

Hello @justusschock! Thanks for opening this PR.

In the file tests/models/test_amp.py:

Line 38:1: W293 blank line contains whitespace
Line 41:1: W293 blank line contains whitespace
Line 44:1: W293 blank line contains whitespace
Line 47:1: W293 blank line contains whitespace
Line 53:1: W293 blank line contains whitespace

Do see the Hitchhiker's guide to code style

@justusschock this is a great catch, any chance you could update the changelog/milestones?

@justusschock mind check the failing GPU test?


#121 fix for voice call not working on latest sdk

Thanks for the great feature addition. If you could add a screenshot of the feature addition, that'd be great.
Before merging changes, please:

Do a fetch & merge
Please review your PR for unnecessary code additions, metadata files, etc such as additional new lines, etc. including only necessary changes to add the feature.


Bower publishing

You must publish your package on Bower (and eventually on npm, RubyGems and any other sort of package manager that people use to manage front-end packages).
Putting it simple: if you don't, people who want to use it will just download and inject it into their project's source code repository. Monkey patches will often happen because they will not create a patch and PR it, because it will be "just a script they'd downloaded from the Internet." You also loose the ability to provide improvements to your users, etc.
So, publishing it to package managers is a must. So, I'm starting the Bower publishing here because that's what I need now (my case: Ruby on Rails app, using RubyGems and proxying some front-end assets through ruby-assets.org), but npm probably should be the next one.
So, they are still tasks for you:

[ ] Create a bower.json

[ ] Choose a name
jquery-loading-overlay is already being used
[ ] Double-check the jQuery version dependency
What is the oldest jQuery version your library is compatible with (or you want it to be)?
[ ] Are these keywords OK/enough?

[ ] Publish it to the registry (bower.io)
Follow steps from the Register section from Bower's documentation

These are things you must do by your own, since you're the author (and now the maintainer) of the lib, it must be on your  package registries' realm.

FYI: RubyGems is probably not needed, since there's ruby-assets.org, a tool that makes Bower packages available for Ruby/Rails projects, and there's no need to process it somewhere before serving to the browser.

I apprecciate the emphasis you put in your post, really.
A pretty simple plugin is becoming quite popular and more and more users are giving me their feedback and I'm glad for that.
Since a few users are requesting bower or npn (or composer, for PHP projects) repositories and they feel a CDN is not enough, I am going to release my plugins on those platform.
Still, I need to be in full control of my repositories because I'm releasing them in my spare time and most of them comes from some other projects I'm working on. In order to mantain the level of quality in all the code I release and mantain, I (unfortunately) MUST follow a strict route of writing-testing-releasing.
Just to be clear, this is what wrote in a post about a PHP library of mine (PHP Shapefile):

my approach is to basically never accept pull requests, I prefer to read suggestions and write/review all the code myself. My open source projects are actually forks of some proprietary libraries I write and mantain for my clients, thus the development and deployment flow goes from them to these public releases.

I want to plan this accurately before diving into it. For my personal likes, I think a CDN is more appropriate for a jQuery plugin, but since I can easily make everybody happy, why not publishing on bower and npm too?
In conclusion, I am rejecting your pull request because of the reasons above, but please be patient for a few days and you will be able to find all my plugins in bower and/or npm too ;)

I don't understand what's the point of never accepting a pull request to one of your libraries. You are losing the biggest benefit of the Open Source. The pull request allows you to read, review and test the code before accepting it so there's no point here. And, if it comes from one of your clients' proprietary software you can even be breaking a contract by releasing that code as MIT licensed software.
So, I think you clearly don't understand the how and why of the open source. I'm writing this answer here as my last attempt to make you understand how pointless is your attitude of rejecting contributions from the community. You clearly are losing an opportunity to gain all the benefits of being a friendly and receptive community member of the Webdev community.
I hope you change your mind, there's still time for it.

And about package publishing, some projects just don't use CDN. My case: we work with heavily optimized bundles, so every vendor asset is concatenated, minified, compressed and tagged with a hash to maximize the utilization of browser caches, even through multiple deployments. All vendors with just one HTTP request (the real expensive thing those days).
We don't need/want a CDN, so we must have the packages available from package managers.

Hey mate, I tried to be polite and all, but please don't try to impose your ideas over the others'.
I will be polite again and answer both of your points, but at the end of the day I am releasing my libraries as free and  open source projects for everybody to benefit from, if they like. No one is obliged to use them, neither I am in no way obliged to change a single comma if I don't want to.
Open Source
Open source does NOT mean that you should accept code and reviews from other people. That's one of the uses, but not the one and only point of it. You will be surprised to know how many companies release their source code but keep the development as an internal business. Most of them even charge the users for the software. The point for them releasing the source code is to be as clear as possible with about their product and show their users the quality of their work.
By the way, no, I am not breaking any contract releasing my libraries. The relationship between my clients and me and what I can and cannot do with the code I write, is absolutely up to our agreements, and how course I can release under the MIT license my libraries. I've chosen this kind of license especially for that: users who don't agree with my developing and releasing policies can fork the projects and work on their own version.
Again, there are many uses and licenses for open source. Collaboration is one of them, but definitely not the only one.
CDN
You said it right: in your case you don't need/want a CDN. That's fine. But many other developers prefer to have single libraries deployed through CDNs and eventually rely on their users browsers' caches built in a cross-site fashion. In their opinion the pitfall of downloading a minimized file from a CDN overplays the greater benefit of not dowloading anything at all if the user already has that specific resource cached even before having ever visited their website. Leaving apart the complexity added by a custom and heavily optimized environment like the one you are using.
That's a matter of preferences and specific scenarios (and there are plenty of both!). And, believe me, through the years and experience I have learned that the more one thinks his view is the only right way, the more other people will eventually prove him wrong providing a completely different set up.
In conclusion
Anyways, I will open some kind of info repository to better explain my reasons not to accept any pull requests (which I more or less have already summarized), so that people will be able to read them and understand.
And, as I have already written, I will pubblish my jQuery plugins on bower and/or npm, so people with different requirements and preferences will be able to benefit from them.
Cheers.

Bower and npm packages available since v1.5.1, see here


PostgreSQL, SQL Server (CockroachDB) potentially should also have explicit indexes on relations even when using foreign keys

Indexes or unique constraints are separate from foreign keys and can be created with @(@)unique or @@index to speed up operations.

For future readers: I think this point is key, and it's true regardless of the referentialIntegrity option. It's something I didn't see in the docs, and had assumed it happened automatically. It turns out both Postgres and CockroachDB don't index it automatically, and neither does Prisma.
Meaning if you have a foreign key relationship, and you try to include the related records, it will result in a full table scan without the presence of an index that is manually created.
@janpio would this be something reasonable to include in guides or discussions about many-to-X relationships, the @relation field, etc.? It seems very easy to miss if you haven't made the mistake before (I just learned this today after 6 years of working with Postgres 🙈 ) and I could see a note as setting people up for success. Happy to contribute to the docs here if you think it's appropriate to add.

Originally posted by @AndrewSouthpaw in https://github.com/prisma/prisma/issues/10611#issuecomment-1319497020

@AndrewSouthpaw thanks for the links! We would need to verify this before documenting, I think. Sometimes the reality is slightly different from what we can find on the web 😄

https://stackoverflow.com/questions/970562/postgres-and-indexes-on-foreign-keys-and-primary-keys/970605#970605
https://cockroachlabs.com/blog/common-foreign-key-mistakes/#3-not-creating-foreign-key-indexes-when-you-add-foreign-keys
https://www.postgresql.org/docs/current/indexes-unique.html

PostgreSQL automatically creates a unique index when a unique constraint or primary key is defined for a table. The index covers the columns that make up the primary key or unique constraint (a multicolumn index, if appropriate), and is the mechanism that enforces the constraint.
Note: There's no need to manually create indexes on unique columns; doing so would just duplicate the automatically-created index.

Originally posted by @Jolg42 in https://github.com/prisma/prisma/issues/10611#issuecomment-1319707533

I confirm that the following databases Prisma supports don't back foreign keys with indexes:

postgres (tested v14 and v15)
sqlserver


How to search new React documents in Dash.app

Dash.app is my favorite APP in daily development.It collects and integrates the use documents of various development languages and frameworks.
But so far, the search for React on it is still the React tutorial documentation on the old reactjs.org website.

Does anyone know how to search for the new react.dev docs on it?

Hello @MuYunyun, I noticed that when you search for React in Docsets, it displays all the versions including the latest version. However, the only available documentation pertains to React 16.8.

This can be solved by adding a new docset feed URL from the latest documentation

@kahenya-anita How to check the currently available React documentation version is 16.8 and where can I add new docset feed URL？

@MuYunyun to add the feed URL you need to;

Install the doc2dash package because you are changing the URL into a docset feed
Add a .json file for Docset metadata
doc2dash -A -n ReactDocset -d /path/to/docset/directory https://react.dev/ scraps data from the documentation into docset format.
Host the generated feed URL to make it accessible
Then go to downloads click add sign and add the Docset Feed URL

I think this is a question for Dash.app, not for us.


Potential dependency conflicts between icetea and mbed-ls

Hi, as shown in the following full dependency graph of icetea, icetea requires mbed-ls >=1.5.1,<2.0, icetea requires mbed-flasher >=0.10.1,<0.11 (mbed-flasher 0.10.1 will be installed, i.e., the newest version satisfying the version constraint), and directed dependency mbed-flasher 0.10.1 transitively introduces mbed-ls <2.0,>=1.5.1.
Obviously, there are multiple version constraints set for mbed-ls in this project. However, according to pip's “first found wins” installation strategy, mbed-ls 1.7.10 (i.e., the newest version satisfying constraint >=1.5.1,<2.0) is the actually installed version.
Although the first found package version mbed-ls 1.7.10 just satisfies the later dependency constraint （mbed-ls >=1.5.1,<2.0), such installed version is very close to the upper bound of the version constraint of mbed-ls specified by mbed-flasher 0.10.1.
Once mbed-flasher upgrades，its newest version will be installed. Therefore, it will easily cause a dependency conflict (build failure), if the upgraded mbed-flasher version introduces a higher version of mbed-ls, violating its another version constraint >=1.5.1,<2.0.
According to the release history of mbed-flasher, it habitually upgrates Mbed-ls in its recent releases. For instance, mbed-flasher mbedls_v171_1 upgrated Mbed-ls’s constraint from ==1.5.1 to >=1.5.1,==1.,mbed-flasher pyocd_mbedls_v178_1 upgrated Mbed-ls’s constraint from >=1.5.1,==1. to ==1.7.7 and mbed-flasher pyocd_mbedls_v178_1 upgrated Mbed-ls’s constraint from ==1.7.7 to ==1.7.8.
As such, it is a warm warning of a potential dependency conflict issue for icetea.
Dependency tree
icetea - 2.0.1
| +- jsonmerge(install version:1.7.0 version range:>=1.4.0,<2.0)
| | +- jsonschema(install version:2.6.0 version range:*)
| +- jsonschema(install version:2.6.0 version range:<3.0.0)
| +- mbed-flasher(install version:0.10.1 version range:>=0.10.1,<0.11)
| | +- mbed-ls(install version:1.7.10 version range:<2.0,>=1.5.1)
| | +- pyserial(install version:3.4 version range:==3.)
| | +- six(install version:1.14.0version range:==1.)
| +- mbed-ls(install version:1.7.10 version range:>=1.5.1,<2.0)
| | +- mbed-os-tools(install version:0.0.13 version range:>=0.0.9,<0.1.0)
| | +- prettytable(install version:0.7.2 version range:>=0.7.2)
| +- prettytable(install version:0.7.2 version range:<1.0)
| +- pydash(install version:4.7.6 version range:<5.0,>=4.0)
| +- pyserial(install version:3.4 version range:>2.5)
| +- requests(install version:2.23.0 version range:*)
| | +- certifi(install version:2<IP_ADDRESS> version range:>=2017.4.17)
| | +- chardet(install version:3.0.4 version range:>=3.0.2,<4)
| | +- idna(install version:2.9 version range:>=2.5,<3)
| | +- urllib3(install version:1.25.9 version range:>=1.21.1,<1.26)
| +- semver(install version:2.10.1 version range:<3.0,>=2.0)
| +- six(install version:1.14.0 version range:>=1.0,<2.0)
| +- transitions(install version:0.8.1 version range:<1.0)
| | +- six(install version:1.14.0 version range:*)
| +- yattag(install version:1.13.2 version range:>=1.0,<2.0)

Thanks for your help.
Best,
Neolith

Suggested Solution

Loosen the version range of mbed-ls to be >=1.5.1.
Remove your direct dependency mbed-ls, and use the mbed-ls transitively introduced by mbed-flasher.
Change your direct dependency mbed-flasher to be <=0.10.1.
@jonikula  Which solution do you prefer, 1 ,2or 3?
Please let me know your choice. May I pull a request to solve this issue?

I don't think this is an issue that we will have to tackle. Mbed-flasher is restricted to between 0.10.1 - 0.11.0 and mbed-ls in turn to version 1.5.1 - 2.0. I would at least hope that if mbed-ls does a 2.0 release and mbed-flasher moves to use it, it would upgrade it's version number to 0.11.0. Icetea would still continue to use the older version of mbed-flasher and mbed-ls, until we want to upgrade.
This is still an issue we should keep an eye on, though.

@jonikula Thank you for your reply. We just wanted to remind you to keep an eye on the evolution of mbed-flasher, to avoid such build failures caused by dependency conflicts.  : )

This repository is no longer maintained and it is deprecated. As result, we are closing all issues/pull request.


Issue highlighting on 4.31.19086

After installing the 4.31.19086 firmware, an attempt to hightlight a phrase, a popup "NickelMenu  Could not find the required SelectionMenuView and SelectionMneuController symbols for adding selection menu items (this is a bug)" was displayed.  After clicking OK 3 times, the highlight menu was displayed.

I will try and release a fix for this tonight.

@pgaskin do you want me to take a quick look at this once I've decompiled libnickel?

Yes, if you want to.

Ok, will do, just waiting for Ghidra to finish chugging away at this.

Looks like SelectionMenuController::lookupWeb() is gone.
Looks like it may have been replaced with SelectionMenuController::lookupGoogle() and SelectionMenuController::lookupBaidu()

Fixed in v0.5.3.


refactor: code maintainability

Codecov Report
Attention: 4 lines in your changes are missing coverage. Please review.

Comparison is base (d5b8903) 95.14% compared to head (d994da9) 95.21%.
Report is 6 commits behind head on main.

:exclamation: Current head d994da9 differs from pull request most recent head 57018e9. Consider uploading reports for the commit 57018e9 to get more accurate results

Files
Patch %
Lines

pkg/queue/queue.go
0.00%
4 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #27      +/-   ##
==========================================
+ Coverage   95.14%   95.21%   +0.07%
==========================================
  Files          14       14
  Lines        1009     1045      +36
==========================================
+ Hits          960      995      +35
- Misses         34       37       +3
+ Partials       15       13       -2

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

:tada: This pull request is included in version 0.7.3 :tada:
The release is available on GitHub release :rocket:


[verifiable-credentials] : tweetnacl-util package not correctly encoding to base64 in mobile vault

The tweetnacl-util used in the @verida/verifiable-credentials lib  base64encoding works when running the tests cases but does not  base64encode the URI correctly when the package is used in the mobile vault and could not be decoded from the web-scanner-demo not sure why it happens that way.
here is an example of an incorrect base64encoding it generated
"https://scan.verida.io/credential?uri=AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAcHAAMBAAAABwcAAAUAAAMBAAQBAAIGAAAIAAEGAAMACAAAAAAFAAkAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYFCAYDAAAJAAADAAEBAAAACAIEAAAGAAgJAAAEAAUHAAAAAAAAAAMEAQAAAAAIAAQAAAAABQAEAAYAAAAJAAADAQAIAggACAcFAAcGBQAFBQAFAAAABgYJAQQDBgMHAAAGAQcAAwQ="

I and @pkhien95 had to replace the encodeBase64() method in the tweetnacl-util lib. that was used in the issuePublicPresentation()  to the code example below and it worked as expected and was decoded correctly from the web-scanner-demo
return {
	item: item,
	result: result,
	did: did,
	veridaUri: uri,
	publicUri: `https://scan.verida.io/credential?uri=${Buffer.from(uri, 'utf8').toString('base64')}`
};

Example code of how the URI its been base64decoded in the web-scanner-demo
   const decodedURI = Buffer.from(uri, 'base64').toString('utf8');

I and @pkhien95 had to replace the encodeBase64() method in the tweetnacl-util lib

@cmcWebCode40 What was changed exactly?
I would definitely recommend against using tweetnacl-utils for base64 encoding / decoding. Using native Buffer to encode and decode like you have is definitely better.
Do you want to create a PR?

Yes, I would create a new PR for this


Valueless keys

In environment sections you can specify valueless keys like
environment:
  - FOO
  - BAR

And docker-compose will pick up the relevant values on the machine compose runs on.
The other form,
environment:
  FOO:
  BAR:

would require serde_yaml changes, I believe.

Serde_yaml sees the second form as having null values. This matches other YAML libraries I tried.
extern crate serde_yaml;
use serde_yaml::Value;

const Y: &str = "
---
environment:
  FOO:
  BAR:
";

fn main() {
    println!("{:#?}", serde_yaml::from_str::<Value>(Y).unwrap());
}

I don't know if there's a spec for docker-compose.yml beyond the reference, but it's documented at https://docs.docker.com/compose/compose-file/compose-file-v2/#environment with no minor version qualifications.
The reason I didn't add an assert_roundtrip! test is that this already fails even for keys with values because compose_yml canonicalizes the array form to the object form. i.e.
environment:
  - FOO=bar

fails an assert_roundtrip! with
  left: `Object({"environment": Object({"FOO": String("bar")})})`,
 right: `Object({"environment": Array([String("FOO=bar")])})`', src/v2/service.rs:338:4


Way to use the at_app template in an existing app

Is your feature request related to a problem? Please describe.
If there is an existing app that wants to use at_app template they have to start rewriting from the scratch. That will take lots of time and patience.
Describe the solution you'd like
At_app will have a command for existing app that doesn't use at_platform. With that command they will create a new file and all the configuration file. It should be different from flutter create as it will only create the configuration file and onboarding.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Useful for quickly switch from non-atplatform app to platform app.

Somewhat related to #48

We can spike this and come up with a proposal, but I suspect that the end result will not be as clean as using the original template.
The main issue here is that we don't want to ruin the user's existing code on the off-chance that they aren't using source control. Maybe the solution here is to backup before executing, and include a restore command.
Another thing to check for is that the file to be modified is valid, so running dart analyze before modifying any files, and failing the command if dart analyze reports any issues. (Probably only for warnings/errors, info should be fine to continue)
Then how do we:

Verify that they have the correct dependencies
Verify that existing dependencies are compatible
Inject the onboarding code into the project

Do we inject an onboarding button widget that they can use
or do we try to inject the onboarding widget as the first screen
Then if we inject as the first screen, we need to handle named vs page routes

Make sure the platform config is up to date

Do we need to export minimum app requirements from each @platform package?
Do we need to create a new package that serves as a spec for what needs to be included in these minimum app requirements?

We won't ruin their existing code. It's more like creating two files(Onboarding widget file and .env file)  inside the lib folder & the platform dependencies will be added. In the lib folder we will provide a file called maybe 'plaformClient' which will contain onboarding widget. we will give the user flexibility to choose any page as their second screen. That's it.


add ci/cd setup for complex assessment gpt

@anludke were you able to test it with a customized code e2e?
Including the deployment of the generated workflow and its execution from the plugin.
The reason I'm asking is to make sure the tekton pipeline is suitable for building the java application and packaging it correctly. I don't recall this part was tested with custom code before.

Pls add the template to the Orchestrator chart.


[Bug]: SYS database type view failed

ODC version
odc430
OB version
ob4215
What happened?

What did you expect to happen?
View successful
How can we reproduce it (as minimally and precisely as possible)?
View sys database types
Anything else we need to know?
No response

external issue id: 38268884

pass


[PROPOSAL] Day 2 Operations

Work on the proposal for day 2 operations support in CAPI and Rancher Turtles.

https://hackmd.io/ZO8fqUOQQSuR1MHp1-43wQ


[CH] Column shuffle and celeborn memory statistic not correct

Backend
CH (ClickHouse)
Bug description

Spark version
None
Spark configurations
No response
System information
No response
Relevant logs
No response

top result is also 1GB.

Here is the OOM stack.

https://github.com/oap-project/gluten/pull/2883 base on this PR

[log.txt](https://github.com/oap-project/gluten/files/12474317/log.txt)

Here is reason, since memory tracker tracks all memory allocation and free, but some memory becomes virtual memory which does not use physical memory, but we know that either Yarn nodemanager or kernel cares only about physical memory. So here now, we should handle OOM to NM or kernel, later we should monitory physical memory instead of total memory.


Transfer on token does not use the balanceOf so expire data does not work

Transfer already blocks movement if expiresEnd or validFrom is breached.


React: headlessUi panels property unmount={false} not working

Bug description:
In React, the Float component always unmounts the panels (Popover.Panel, Listbox.Panel) even if we pass the prop unmounted={false} on Popover.Panel or Listbox.Panel. For example, when using the Popover with form elements, we need those panels to be hidden, not unmounted, otherwise they will not be collected with formData on submit.
To reproduce:
Head over to the Popover example and put unmount={false} on Popover.Panel
(<Popover.Panel className="w-[240px] h-[70px] bg-white border border-gray-200 rounded-md shadow-lg focus:outline-none" unmount={false}>)
Expected behavior
When we pass the prop unmount={false}, the panel should not be unmounted if not showing, it should only be hidden.
PS: it works as expected in Vue examples though.

I took a glance at your code, you're missing the unmount prop on transitionProps here.

Fixed in v0.13.3