ICRC-49: Call Canister

This Standard describes how the relying party can request calls to 3rd party canister executed by the signer using the requested identity. All requests are subject to user approval to prevent misuse of this interaction.
Draft Document: icrc_49_call_canister.md

@frederikrothenberger I am moving a follow up question here regarding your example:
Do you wish to connect to https://awesomedapp.com/ and share the following identities:

- Social Media (njsxs-anfxg-se6ti-anmmo-qdc7u-wtcd5-aqn6g-i6hna-uelej-nypov-6qe)
 - Allow the dapp to initiate transactions with this identity
- Read Only Identity (hcg7g-lsf6s-ghhip-rjn6u-jkbdw-wsdzw-rfdwn-kd2ii-nicnq-dzsdp-aae)
 - Allow the dapp to initiate transactions with this identity
- Top Secret (444v7-kuyfk-v4b5q-sbxol-2tjqu-jpohg-bpdog-pr53h-6jppm-uk2lw-jae)

We can assume a multi canister app might make more than one call to icrc25_request_permissions during the span of a session. Have you discussed how the signer can find relevant context to show the user when the icrc_49_call_canister_call scope is requested. https://awesomedapp.com represents the domain the dapp is running on. But that is most likely not enough context to convey any meaningful information to the user. It might be at "first connect", when dapp is started. But if additional permissions are requested further on, https://awesomedapp.com does no longer provide the details the user needs to see to approve/reject. Of course, there is the target, but showing the user Do you wish to connect to "ryjl3-tyaaa-aaaaa-aaaba-cai", does not convey any meaningful information either.
Have you discussed any mechanism that would allow the signer to translate canister ids to something more legible? The relying party cannot be trusted to give a name since it can be malicious.

Have you discussed any mechanism that would allow the signer to translate canister ids to something more legible? The relying party cannot be trusted to give a name since it can be malicious.

Isn't this ICRC-21? Also for token standards supported by the signer, the signer could identify that the canister is a ledger and the method called upon this ledger is e.g. transfer. Then it could decode and show the arguments  to user e.g. Transfer 10 ICP to account X.
I've implemented this second approach in Slide  wallet, ICRC-21 is still on my todo list.

App starts, requests icrc_49_call_canister_call permissions to interact with the dex canisters

For a dapp to interact with it's own canisters I would opt for ICRC-34 which avoids user interaction all together by getting a delegation for the dapp canister ids as targets.

Isn't this ICRC-21?

Yeah, for the actual call there is the consent message, that is great. There, the canister can provide all context needed to let the user make an informed decision.
I am talking about the icrc25_request_permissions call. The app is requesting permissions to a canister where the only available context is the canister id, which to a user means nothing.
Relying on the signer to "identify that the canister is a ledger", that places lots of weight on the signer (wallet) developer. First there are token ledgers, then there are NFT canisters, then .. staking protocols.. and so on. With a similar setup like the consent message interface, perhaps canisters can self identify?
For future consideration, I understand this is out of scope for now:
Canister self identification
type icrcX_canister_info_preferences = record {
    // Same semantics as HTTP Accept-Language header
    language: text;
};

type icrcX_canister_info_request = record {
    // User preferences with regards to the info message presented to the end-user.
    consent_preferences: icrcX_canister_info_preferences;
};

type icrcX_canister_info_ok = record {
    // Human readable name of the canister.
    name: text;
    // Human readable description of the canister.
    description: text;
    // Same semantics as HTTP lang attribute
    language: text;
};

type icrcX_canister_info_response = variant {
    // The call is ok, consent message is provided.
    Ok: icrcX_canister_info_ok;
    // The call is not ok, error is provided.
    Err: icrcX_canister_info_error;
};

service : {
    // Returns a human-readable canister info message.
    icrcX_canister_info: (icrcX_canister_info_request) -> (icrcX_canister_info_response);
}

Isn't this ICRC-21?

Yeah, for the actual call there is the consent message, that is great. There, the canister can provide all context needed to let the user make an informed decision.
I am talking about the icrc25_request_permissions call. The app is requesting permissions to a canister where the only available context is the canister id, which to a user means nothing.
Relying on the signer to "identify that the canister is a ledger", that places lots of weight on the signer (wallet) developer. First there are token ledgers, then there are NFT canisters, then .. staking protocols.. and so on. With a similar setup like the consent message interface, perhaps canisters can self identify?
For future consideration, I understand this is out of scope for now:
Canister self identification
type icrcX_canister_info_preferences = record {
    // Same semantics as HTTP Accept-Language header
    language: text;
};

type icrcX_canister_info_request = record {
    // User preferences with regards to the info message presented to the end-user.
    consent_preferences: icrcX_canister_info_preferences;
};

type icrcX_canister_info_ok = record {
    // Human readable name of the canister.
    name: text;
    // Human readable description of the canister.
    description: text;
    // Same semantics as HTTP lang attribute
    language: text;
};

type icrcX_canister_info_response = variant {
    // The call is ok, consent message is provided.
    Ok: icrcX_canister_info_ok;
    // The call is not ok, error is provided.
    Err: icrcX_canister_info_error;
};

service : {
    // Returns a human-readable canister info message.
    icrcX_canister_info: (icrcX_canister_info_request) -> (icrcX_canister_info_response);
}

That would be rather nice, right now I try calling all the "icrc specific supported standards" method on a canister to see what doesn't error and what does. Would be really helpful to have a standardized "info and supported base standards method" as you described above.

The general conclusion was, that we need some sort of shared registry (e.g. NNS controlled), as self-declaration is broken due to impersonation (i.e. all applications must have distinct metadata in order to not cause confusion on the users side)

Maybe identifying could be done by origin?

Canister A has a method that returns origin B
Origin B has a file at .well-known/trusted_canisters
Signer calls methods from step 1 and 3 and then checks if canister is in list of step 2
If this is true, canister clearly shows origin B

This would clearly connect a canister to a specific origin making it at least clear to the end user with which service it's communicating.
Additional metadata like a name and description could also be fetched and shown in step 5. This data is clearly something that could be impersonated but so can anyone create an ICRC-1 canister that calls itself ICP, now you could at least see that the domain invalid.
This also would make it easier to add tokens to a wallet as a user, you just enter the domain instead of principal.

Additional metadata like a name and description could also be fetched and shown in step 5. This data is clearly something that could be impersonated but so can anyone create an ICRC-1 canister that calls itself ICP, now you could at least see that the domain invalid.

How would the domain be invalid?
Let's say we do validate according to the procedure you describe, we still face the issue that there can be the original setup:

canister A, domain awesome.com
and a malicious impersonation
canister B, domain avvesome.com, which copies all the metadata from awesome.com / canister A verbatim including stealing the logo, etc.

Both sets of metadata would validate according to the outlined procedure (so no invalid domain warning).
The problem is not associating metadata with a canister / domain. The problem is making sure, that that data is not impersonating some other application.

canister B, domain avvesome.com, which copies all the metadata from awesome.com / canister A verbatim including stealing the logo, etc.

Yeah similar domains would indeed still be a limitation :/

I agree with @frederikrothenberger that the way forward is a decentralised centralised registry. In the "regular world" there is always such a list, maintained by a "trusted party". When I am asked to sign a banking transaction in my Swedish banking app, I am asked to sign a message using another app - the "BankId" app. The organisation building the BankId app maintains the list and guarantees that no one is impersonating my bank. Trusted origin and trusted consent message allows me to sign the message without being too nervous that someone is stealing my funds.
Indeed, this would be a good project to be picked up by the community.


embassy-net: TCP sockets discards unsent data on Drop

I have a relatively simple program that

accepts a new connection
writes some bme280 measurements to the socket
drops the socket and waits for a new connection

This results in no data being transmitted. As far as I can tell, the problem is that Drop immediately unregisters the socket's buffers from the network stack so that the stack never gets to execute the write.
I would have expected all outdoing data to be sent. Alternatively, there should be a method that waits for this.
let mut rx_buffer = [0; 4096];
let mut tx_buffer = [0; 4096];
let mut buf = [0; 4096];

loop {
    let mut socket = TcpSocket::new(stack, &mut rx_buffer, &mut tx_buffer);
    if let Err(e) = socket.accept(1234).await {
        defmt::warn!("accept error: {:?}", e);
        continue;
    }
    let m = bme.measure(&mut Delay).await.unwrap();
    let n = serde_json_core::to_slice(&m, &mut buf).unwrap();

    match socket.write_all(&buf[..n]).await {
        Ok(()) => {}
        Err(e) => {
            defmt::warn!("write error: {:?}", e);
            break;
        }
    }
}

This is intended behavior. It has to be this way because the data is in the buffers you provide. If you drop the socket and deallocate the buffers, the stack has nowhere to store it.
One solution would be to make .flush() wait until all the data is ack'd at the TCP level. It's not currently implemented, but PR's welcome.
However, in practice, if you want this to be reliable, you probably want some "application-level ACK" that the data was received correctly on the other end. Waiting for TCP ACKs is not enough, because:

ACK only means it has reached the remote OS's TCP stack, it doesn't mean the data has been delivered to the application and the application has successfully stored it on a database or whatever.
If you go through WAN, there can be TCP middleboxes / proxies that will ACK the data and then take charge of sending it to the peer.

That makes sense. Thanks for the tip for application-level ACKs. I don't think, I require them specifically in my case but waiting for incoming data would certainly fix my issue.
I think I came up with an implementation for flush, I've opened a PR


how do I train in single gpu

Hi, tianweiy
Thank you for centerpoint.
But I have some problem when I train centerpoint.
I have only one gpu. So I want to learn with single gpu. Can you give me Guideline?
Additionally, the following error occurred and I would appreciate your advice on how to solve it.
Thank you
(centerpoint) ------@------:~/------/cp/CenterPoint$ python -m torch.distributed.launch --nproc_per_node=1 ./tools/train.py /home/------/------/cp/CenterPoint/configs/nusc/pp/nusc_centerpoint_pp_02voxel_two_pfn_10sweep.py
2021-03-30 17:11:55.051995: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0
No Tensorflow
Deformable Convolution not built!
2021-03-30 17:11:55,117 - INFO - Distributed training: False
2021-03-30 17:11:55,117 - INFO - torch.backends.cudnn.benchmark: False
2021-03-30 17:11:55,139 - INFO - Finish RPN Initialization
2021-03-30 17:11:55,139 - INFO - num_classes: [1, 2, 2, 1, 2, 2]
Use HM Bias:  -2.19
2021-03-30 17:11:55,164 - INFO - Finish CenterHead Initialization
Traceback (most recent call last):
File "./tools/train.py", line 137, in
main()
File "./tools/train.py", line 112, in main
datasets = [build_dataset(cfg.data.train)]
File "/home/------/------/cp/CenterPoint/det3d/datasets/builder.py", line 41, in build_dataset
dataset = build_from_cfg(cfg, DATASETS, default_args)
File "/home/------/------/cp/CenterPoint/det3d/utils/registry.py", line 78, in build_from_cfg
return obj_cls(**args)
File "/home/-----/------/cp/CenterPoint/det3d/datasets/nuscenes/nuscenes.py", line 45, in init
super(NuScenesDataset, self).init(
File "/home/------/------/cp/CenterPoint/det3d/datasets/custom.py", line 37, in init
self._set_group_flag()
File "/home/------/------/cp/CenterPoint/det3d/datasets/custom.py", line 164, in _set_group_flag
self.flag = np.ones(len(self), dtype=np.uint8)
File "/home/------/------/cp/CenterPoint/det3d/datasets/nuscenes/nuscenes.py", line 121, in len
self.load_infos(self._info_path)
File "/home/-----/------/cp/CenterPoint/det3d/datasets/nuscenes/nuscenes.py", line 89, in load_infos
_cls_dist = {k: len(v) / duplicated_samples for k, v in _cls_infos.items()}
File "/home/------/------/cp/CenterPoint/det3d/datasets/nuscenes/nuscenes.py", line 89, in
_cls_dist = {k: len(v) / duplicated_samples for k, v in _cls_infos.items()}
ZeroDivisionError: division by zero
Killing subprocess 10506
Traceback (most recent call last):
File "/home/------/anaconda3/envs/centerpoint/lib/python3.8/runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/home/------/anaconda3/envs/centerpoint/lib/python3.8/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/home/------/anaconda3/envs/centerpoint/lib/python3.8/site-packages/torch/distributed/launch.py", line 340, in
main()
File "/home/-----/------/envs/centerpoint/lib/python3.8/site-packages/torch/distributed/launch.py", line 326, in main
sigkill_handler(signal.SIGTERM, None)  # not coming back
File "/home/-----/anaconda3/envs/centerpoint/lib/python3.8/site-packages/torch/distributed/launch.py", line 301, in sigkill_handler
raise subprocess.CalledProcessError(returncode=last_return_code, cmd=cmd)
subprocess.CalledProcessError: Command '['/home/-----/anaconda3/envs/centerpoint/bin/python', '-u', './tools/train.py', '--local_rank=0', '/home/------/------/cp/CenterPoint/configs/nusc/pp/nusc_centerpoint_pp_02voxel_two_pfn_10sweep.py']' returned non-zero exit status 1.
I modified some to  --- because  I don`t want to be known my private impormation(like name and name of laboratory)
and I use cuda 11.0 and pytorch 1.8.1 cudnn 8.5.0
and install apex and spconv by your guideline (install.md)

this is not related to gpu. Is this nuScenes mini ?

change this line https://github.com/tianweiy/CenterPoint/blob/046e1e0e8cdaa2168bc4ac0bf1ad052a0cd58294/det3d/datasets/nuscenes/nuscenes.py#L89 to
            _cls_dist = {k: len(v) / max(duplicated_samples, 1) for k, v in _cls_infos.items()}

here is the night because I live in Asia.
I will proceed with your proposal after 8 to 9 hours.
Can you stay awake and help me then?(If this expression is rude, very very sorry...I'm poor at english...)
I used a data set already stored in our lab.
Could you give me a Guideline to download which dataset?
I'm going to use that dataset to proceed

good night, no problem.
Here https://www.nuscenes.org/download Full Dataset, nuScenes Trainval

full data set have many part
So is any part okay?

yeah, mini / any part is ok. But you need full dataset to reproduce result. https://github.com/tianweiy/CenterPoint/issues/106#issuecomment-810310715 should fix the problem you faced

Thak you I will do your suggestion after 9hour
And have a nice day!

tensorflow: no need for nuScenes. You need it for Waymo.
apex: for distributed training. single gpu no need

Thanks a lot!!!

So because I have only one gpu, I donn`t need to install apex.
is this right?

yes

must I create symlink?

the data location is assumed at that place, so you need either a symlink or hard link

can I use path like /data/sets/nuScenes???
I am poor at symlink, so I want use that way

and I just finish downloading dataset and extracting
so I just need Lidar data so can I delete some folder like  CAM_BACK

can I use path like /data/sets/nuScenes??? <- then remember to change path in the config
so I just need Lidar data so can I delete some folder like CAM_BACK < I believe so

samples_per_gpu=4
is it batch_size?

yes

I succeeded. I was able to succeed thanks to your help.


largest-series-product: Do not test slices

The slices functions is an internal implementation details and thus the
test case for the largest-series-product problem should not be concerned
with testing it.
Its presence may cause students to falsely think that their solution has
to use this function, instead of the alternative implementation of only
iterating through the digits once.
The series tests are already well-covered by the series exercise already
existing in this track.
If it is desired to give hints on how to approach this problem (which
was one advantage of having the slices test), then consider including a
hints file and/or directory in the largest-series-product directory.
This PR arises from discussion in
https://github.com/exercism/x-common/issues/192

That totally makes sense. Thanks!


Files loaded multiple times

I have @import "path/to/bootstrap.less" in a few different files:

Is this a bug?

Probably, but a steal-less bug.

Posted in the correct repo: https://github.com/stealjs/steal-less/issues/18


python311Packages.tplink-omada-client: 1.3.6 -> 1.3.7

Changelog: https://github.com/MarkGodwin/tplink-omada-api/releases/tag/release%2Fv1.3.7
Description of changes

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Duplicate of #277680


Fixes #16837 - CSV column diff error when column removed

Fixes #16837 if a column is deleted.
We were clobbering the columns that were added by looping through the aline (base) and then when bline (head) was looped through, it clobbered what was in the "cells" array that is show in the diff, and then left a nil cell because nothing was shifted.
This fix properly shifts the cells, and properly puts the b cell either at its location or after, according to what the aline placed in the cells.
This includes test, adding a new test function since adding/removing cells works best with three columns, not two, which results in 4 columns of the resulting cells because it has a deleted column and an added column. If you try this locally, you can try those cases and others, such as adding a column.
There was no need to do anything special for the rows when aline == 0 || bline == 0 so that was removed. This allows the same code to be used for removed or added lines, with the bcell text always being the RightCell, acell text being the LeftCell.
I still added the patch @zeripath gave at https://github.com/go-gitea/gitea/issues/16837#issuecomment-913007382 so that just in case for some reason a cell is nil (which shouldn't happen now) it doesn't throw a 500 error, so the user can at least view the raw diff.
Also fixes in the view.go file how if a CSV file is empty (either created empty or if you edit it and remove all contents) it throws a huge 500 error when you then save it (when you view the file). Since we allow creating, saving and pushing empty files, we shouldn't throw an error on an empty CSV file, but just show its empty contents. This doesn't happen if it is a Markdown file or other type of file that is empty.

I see integration isn't passing, and I also found this case causes and index out of bounds error. Will fix.
BASE:
col1,col2,col3
a,b,c

HEAD:
col3,col4,col5
c,d,e

@silverwind @zeripath Ok, if you could play with this reworking of all things CSV Diff locally (try to break with all sorts of CSV diffs) and review, appreciate it!

Codecov Report

Merging #17018 (5abe681) into main (3d6cb25) will increase coverage by 0.03%.
The diff coverage is 91.66%.

:exclamation: Current head 5abe681 differs from pull request most recent head 8dadb94. Consider uploading reports for the commit 8dadb94 to get more accurate results

@@            Coverage Diff             @@
##             main   #17018      +/-   ##
==========================================
+ Coverage   45.22%   45.25%   +0.03%
==========================================
  Files         766      766
  Lines       86641    86637       -4
==========================================
+ Hits        39183    39209      +26
+ Misses      41113    41089      -24
+ Partials     6345     6339       -6

Impacted Files
Coverage Δ

routers/web/repo/view.go
40.95% <0.00%> (-0.58%)
:arrow_down:

services/gitdiff/csv.go
80.30% <94.28%> (+11.49%)
:arrow_up:

models/unit.go
41.09% <0.00%> (-2.74%)
:arrow_down:

services/pull/pull.go
41.78% <0.00%> (-0.41%)
:arrow_down:

modules/queue/queue_bytefifo.go
59.88% <0.00%> (+0.59%)
:arrow_up:

models/repo_list.go
78.43% <0.00%> (+0.78%)
:arrow_up:

modules/queue/queue_channel.go
96.66% <0.00%> (+1.66%)
:arrow_up:

modules/queue/workerpool.go
50.00% <0.00%> (+1.90%)
:arrow_up:

... and 1 more

Continue to review full report at Codecov.

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

DO NOT MERGE yet..... now I find that if the file is empty initially, viewing the commit returns a 500 again. Have to check that case.

Ok, fixed initial commit with EOF 500 error.

Just a note, still working on this, have made great progress in making sure it is done right. Even adding in it noting when a column has been moved so that is brought to the attention of the person reviewing the PR.

Finally got a chance to work on this after dealing with COVID and lots of other work. Hope this gets looked at. Please feel free to ask question but hopefully the comments make sense. Takes a bit of work to nicely show a CSV diff. As already stated, now also shows moved columns but accounts for column additions and deletions (that is, if columns before a column were added or deleted, it doesn't flag the existing column as moved).
Example diff:

@zeripath @silverwind @KN4CK3R


Additional 4.0 Tests

Adds test coverage for controller and layout guide-based constraints and additional basic operators. Fully covers AnchorGroupProvider.swift and increases coverage on Anchorage.swift.

Codecov Report

:exclamation: No coverage uploaded for pull request base (feature/jvisenti/4-0@bec93dd). Click here to learn what that means.
The diff coverage is 0%.

@@                   Coverage Diff                   @@
##             feature/jvisenti/4-0      #41   +/-   ##
=======================================================
  Coverage                        ?   15.06%
=======================================================
  Files                           ?        7
  Lines                           ?     1826
  Branches                        ?        0
=======================================================
  Hits                            ?      275
  Misses                          ?     1551
  Partials                        ?        0

Impacted Files
Coverage Δ

AnchorageTests/AnchorageTests.swift
0% <0%> (ø)

Continue to review full report at Codecov.

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

Codecov Report

:exclamation: No coverage uploaded for pull request base (feature/jvisenti/4-0@bec93dd). Click here to learn what that means.
The diff coverage is n/a.

@@                  Coverage Diff                   @@
##             feature/jvisenti/4-0     #41   +/-   ##
======================================================
  Coverage                        ?   49.1%
======================================================
  Files                           ?       5
  Lines                           ?     560
  Branches                        ?       0
======================================================
  Hits                            ?     275
  Misses                          ?     285
  Partials                        ?       0

Continue to review full report at Codecov.

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


hi platfommio-atom-ide-terminal dev~~ i report issue

hi im korean dev
i use korean(utf-8) in platformio-atom-ide-terminal
if i write korean in platformio-atom-ide-terminal , text is writed two times in platformio-atom-ide-terminal
example
i want to write '가나다라'(abcd) but now issue is writed '가나나다라라'(abbcdd)
i used font 'D2Coding' , 'monaco'  and 'monospaced font' but i have this issue

Please retest again with platformio-atom-ide-terminal 2.9.0 is using node-pty-prebuilt instead unmaintained and outdated pty.js


Configuration File

Settings such as max_phrase_length, host, port, and buffer_size` should be configurable via a config file.

What do you think the config file should be like? Something similar to the OpenSSH config is easy to write and super easy to parse.

Yeah, I was thinking exactly like an OpenSSH config file or Redis conf.

It could be a .h file. Then the existing makefile will configure it.

But then people would have to recompile fist every time they make a change to the config file, wouldn't they?

I think that keeping the config options in a header file would make it impossible to package. Maybe we could keep the default options easily modifiable in a header so that anyone wants to work this way still can.

I'm just thinking every time we change max_phrase_length we have to re-index the whole corpus so a few hundred milliseconds to recompile seems like small change. This is just a personal sensitivity of mine when a colleague made a config file to specify where the real config file would be found. We had an amazingly powerful IDE but it couldn't figure out where his numbers came from.

Definitely understand where you're coming from. The problem is that it's just so damn inconvenient especially if you aren't a developer. If you asked me to recompile Redis every time i wanted to make a change to the configuration I'd probably not use Redis.
Also, in the case of max_phrase_length it also depends on how we define what it means to change the phrase length. I am of the opinion that changing the phrase length of an already established database doesn't require a re-indexing of the entire db. Instead, all data going forward will be indexed using the new max_phrase_length value.


disableSSG from hono/ssg is not work with HonoX

What version of HonoX are you using?
0.1.1
What steps can reproduce the bug?

npx create hono@latest , select "x-basic"
Add routes using Hono instance or createRoute and use disableSSG from "hono/ssg"
Generate pages by build.ts that runs https://github.com/honojs/vite-plugins/blob/55e3abfb8017c7ee9606458da665e3f09e0d428f/packages/ssg/src/ssg.ts#L34-L50 , or use "@hono/vite-ssg"
Generated codes include text files that contains "SSG is disabled"

What is the expected behavior?
Not even a text file containing "SSG is disabled" is left behind, and nothing is generated from the disableSSG route.
What do you see instead?
Text files that contains "SSG is disabled"
Additional information
This is runtime agnostic issue. Reproduced in Node v21.6.0, Bun 1.0.23, Deno 1.39.4

Maybe I should write this in https://github.com/honojs/hono ?

Hi @berlysia. Thank you!
I believe this is a regression due to the following change.
This mechanism did not work when notFound was wrapped in jsxRenderer as in honox
https://github.com/honojs/hono/pull/2179
However, I also believe that this problem is not due to the PR above, but rather to the "output of a page that returns a 404".
I think the following issues also need to be discussed at the same time
https://github.com/honojs/hono/issues/2180
P.S.
If you have stream enabled, maybe the following issues are also relevant.
https://github.com/honojs/hono/pull/2218

In my another investigation says this issue's key line is here (by good old console debug):
https://github.com/honojs/hono/blob/553d555e096855686b64cfb56c9560606c379396/src/helper/ssg/index.ts#L154
I don't know why currently. And what's even weirder is that it works when pure hono and @hono/vite-ssg ...

Resolved by https://github.com/honojs/hono/pull/2477 , thanks!


fix: use Map size to calculate the number of children

fix: use Map size property to calculate the number of children. The current approach does not count them correctly
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/size

🔗 Linked issue

❓ Type of change

[ ] 📖 Documentation (updates to the documentation, readme, or JSdoc annotations)
[x] 🐞 Bug fix (a non-breaking change that fixes an issue)
[ ] 👌 Enhancement (improving an existing functionality like performance)
[ ] ✨ New feature (a non-breaking change that adds functionality)
[ ] 🧹 Chore (updates to the build process or auxiliary tools and libraries)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description

The current approach to count the number of children that a node has is incorrect
This means that calling remove will remove nodes that have no data, but do have children
The intention is to remove nodes that have both no data and no children
This uses the Map size property to count children correctly and align with the original intended behaviour

📝 Checklist

[ ] I have linked an issue or discussion.
[ ] I have updated the documentation accordingly.

Thanks for taking a look @pi0. I've written a test to cover this. Changing node.children.size === 0 to Object.keys(node.children).length === 0 will make this fail.

@AndrewWalsh Since main branch is already prepared for 2.x release, this patch will be included in 2.x once released but please let me know if it is something blocking for you i can make a hotfix branch to cherry-pick it.

All good, I don't need the fix from my end, thanks for the consideration.


Device Details - Add properties (ability to show device properties)

Device detail's has several controls that the user can edit:

figma
Controls

[ ] Edit code
[ ] Edit code length
[ ] One touch lock toggle on/off
[ ] Edit noise level

@miken-seam I can't seem to find the design for what happens when the user clicks Edit.

@mikewuu for the props / actiosn:
For door locks, we should only have:

Lock / Unlock action
Display Code Length, do not allow edit

For noise sensors, we can:

Show Noise level

Doesn't look like there are any other properties required controls for now as we're only handling locks.
@dawnho , going to close this issue, and open new ones as we identify missing controls / properties.


Include uptime in audit metadata for "stop" events

Helpful for reporting, estimating savings etc.  Could possibly also do the inverse - reporting on downtime when starting.

Have added EC2 uptime to metadata in PR #371, but this is not directly available for RDS - see #372


Fix doc build on windows

Let's see if it works...

@GuillaumeGomez Thanks, seems it fixed: apveyor generated doc on x32.

Great!


1.19.0-beta2: Cursor stucks at the first letter when using macOS Chinese IME

Prerequisites

[x] Put an X between the brackets on this line if you have done all of the following:

Reproduced the problem in Safe Mode: http://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode
Followed all applicable steps in the debugging guide: http://flight-manual.atom.io/hacking-atom/sections/debugging/
Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq
Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom
Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages

Description
Cursor stuck at the first letter when using macOS built-in Chinese pinyin IME.
We expect to input some characters first, and choose a word in IME panel. But from 1.19.0 (maybe beta 1), the cursor always stucks at the first letter. Although I can still type Chinese correctly under the circumstances., it is more helpful to see what you are typing out.
Steps to Reproduce
Expected behavior:
In 1.18.0, it looks well.

Actual behavior:
However, the cursor moves no more in 1.19.0-beta2.

Reproduces how often: every time
Versions
OS: macOS Sierra 10.12.5
Atom    : 1.19.0-beta2
Electron: 1.6.9
Chrome  : 56.0.2924.87
Node    : 7.4.0
Additional Information
At first, I dived into source code to search for the problem. Soon, I overwhelmed with the large codebase of Atom. I cannot figure out which commit producing this bug. If anyone can point out which part may produce this problem, I can help to solve it. Thanks :)

I'm guessing this is also related to the TextEditorComponent rewrite.
/cc @as-cii @nathansobo

Similar problem occurs when using Google IME (Japanese)
Cursor stuck at the first letter, and I can see one letter when I'm typing.

Mac OS Sierra 10.12.5
Atom 1.19.0-beta2
Google 日本語入力 2.20.2700.1

It looks like this is a bug in Electron 1.6, but it should be fixed in Electron 1.7 (which is still in beta, though). Backporting a fix to 1.6 seems to be non-trivial, so I am afraid we will have to wait till Electron 1.7 hits stable in order to use it in Atom.
Meanwhile Electron 1.7 is in beta, though, it might be nice to get the ball rolling on the upgrade. Simply bumping the Electron version makes Atom crash, so we'll need dedicate some time to understand how to upgrade. /cc: @iolsen for prioritization.

I'm using Mac Zhuyin IME, it's the same problem:

(I typed: 5j/ [space] jp6gj [space] bj4 [enter])

Anyone impacted by this on 1.19 should downgrade to 1.18 and disable updates until Electron 1.7 gets out of beta and we can upgrade. My apologies.

The problem also occurs in stable v1.19.0 which was released as a stable version.
My environment:

Atom 1.19.0 x64
macOS Sierra 10.12.6
Google Japanese IME

It is regrettable that the problem reported in the beta version was not fixed and the stable version was released as it was.
It will be fixed by downgrading, but it will be difficult for general users who are not developers.
But, everyone has a mistake.
Based on this, if you are going to improve Atom, it would be nice to be able to easily downgrade.

It is regrettable that the problem reported in the beta version was not fixed and the stable version was released as it was.

Yeah, unfortunately my understanding is that there was no way to really fix this without upgrading Electron, and the new version isn't ready. It should be pretty easy to downgrade to 1.18 by downloading it from the releases page. You can disable updates from the about dialog. I'm sorry to roll this to stable with this issue. Maybe we should have waited, but there were many improvements that we needed to get out there.

It is possible to obtain an old version from the release page and downgrade it. But, what to choose from downloads is hard to understand.
I am a developer so I can understand what I need. However, many users obtained from https://atom.io/ will have difficulty selecting archives selecting to their environment.
Improvement plan:

Add rollup function to about dialog
Organize downloads on release page (in order of popular platform)
Publish old version to https://atom.io/ (Automatically check user environment like latest version)

However, returning to the old version is a risk. Normally it is preferable not to degrade the latest version.
3 seems to be good in these plans. How about placing older version links after warning text explaining the risk?

If I understand things correctly, this issue seems affecting all non-english IME.

never thought this bug would impact my daily work.

i has downgraded to 1.12 directly

yes, this issue affecting Microsoft Windows IME (Chinese, Japanese), too.

This issue is also reproduced on Ubuntu Gnome with a Japanese IME (namely fcitx-mozc). I have downgraded to Atom 1.18.

This was a process failure on our part. I misunderstood the magnitude of the issue when I saw it and it got lost in the shuffle. We really value our CJK users and I apologize. We have a workaround for the Chromium bug in the works via #15265 that should go out as a hotfix early next week so everyone can update.

in 1.19.0-beta2, this will be fixed?

@buuug7 It will be fixed in the next round of hotfix releases. Atom 1.19.1 and 1.20.0-beta2. They should both be released early next week,

@Ben3eeE i can't wait (-_-

I checked that the problem was fixed in Atom v1.19.1.
Thank you very much!!!

Mac Zhuyin IME fixed on 1.19.1, great job, thanks!

Thank god it works!

It works! Thanks a lot!

Great job , i removed sublime text from my mac and embrace Atom.

Thanks! Atom 1.19.1 works fine with a Japanese IME (fcitx-mozc) as far as I've tried it on a clean installation of "ubuntu-ja-17.04-desktop-amd64" on VirtualBox.

Thanks to everyone for reporting back that it is working now :heart: and apologies for the issue :bowing_man:

Atom 1.19 works fine, but after upgrade to 1.20.0, this problem occurs again.
I use squirrel and macOS 10.12.6 (Atom version, 1.20.0)

/cc: @ungb @rsese Can you check :point_up: with Atom 1.20?

I'm unable to see this issue in atom 1.20.0.
on 1.20.0

Using Squirrel that you linked to, I was unable to repro the issue in Atom 1.20.0.  Can you attach image or gif of what you're seeing?

@ungb It's obvious, the popup jump from top left corner to the bottom of line.
You can compare on different versions.

ahh I see.  Not a problem!  Can you create a new issue for it @xionglun?  you also should link to this one so  it will give context on the issue.

@ungb OK, I have created a new issue.


Gift Entry: Objects Without Name Fields Cause "No such column 'name'" Error

When Lookup fields whose related object do not have a "Name" field are included in a Template, the Gift Entry screen shows a "No such column 'name' on entity " error:

Steps to reproduce:

Create a Lookup field on Data Import that is related to an object without a "Name" field (like Case)
Create a Lookup field (to Case) on Opportunity
Create a Field Mapping for these two fields
Create a Template that includes the new Case Lookup field
Create a Batch from that Template
Open the new Batch and observe the "No such column" error

Expected behavior:
Lookups that reference objects without Name fields should not throw an error and should instead use whatever field is used in place of "Name" on these objects (for example, CaseNumber on Case)

**lurch: add

Tracking W-042449


Moved variables closer to usage to fix unused variable warning

Unused variable warnings were causing my dev build to fail (Windows, MSVC2019).

Thanks!


calc delivery rate

At the moment, the rate is purely calculated by the ack rate, rather than using min(ack_rate, delivery_rate) as specified in https://tools.ietf.org/id/draft-cheng-iccrg-delivery-rate-estimation-00.html.
I tend to believe that the actual delivery rate would be reflected better by something  like average(ack_rate) measured over some time, because doing so would take the jitter in both directions into account, wheres capping it by min takes jitter in only one direction into account.
But what you need depends on the purpose.

FWIW, if we are to calculate smoothed delivery rate from the value being obtained by this PR, we'd need to apply something like https://gist.github.com/kazuho/bf848556ae05aad0f006b1ff8658f37b, calculating the correct "significance" of each sample.

Closing, as the alternative (#486) has been merged.


Upgrading to Swift 3

ported to swift 3
updated settings

Could you take a look at why the tests are failing?

its mostly syntax errors

yeah, travis isn't configured with Xcode 8 so tests won't pass...

Looks like Travis does have an Xcode8 beta option: https://docs.travis-ci.com/user/osx-ci-environment/#OS-X-Version
osx_image: xcode8

There is nothing to do for test failing now.
This proposal is worth being accepted. (I would like to use it.)
But I think it should not be merged into master branch, but new swift3 branch like these.
https://github.com/Alamofire/Alamofire/tree/swift3
https://github.com/SwiftyJSON/SwiftyJSON/tree/swift3

I checked it, and I found it is for Xcode 8 beta 1, not for beta 2.
Currently, we cannot build on Xcode 8 beta 2.
// Now
public let Defaults = UserDefaults.standard()

// Should be
public let Defaults = UserDefaults.standard

I can fix it soon.
Could someone create new branch: swift3?

Travis CI made the updates on Monday, so this can be revisited. https://twitter.com/travisci/status/752704816116293632

https://github.com/uny/SwiftyUserDefaults/blob/master/.travis.yml
Maybe this will work.

Browsing through the changes, I notice that NSDate and NSData have been changed to Date and Data respectively, which left me wondering if the same should happen to NSArray and NSDictionary for consistency in returning value types?

Browsing through the changes, I notice that NSDate and NSData have been changed to Date and Data respectively, which left me wondering if the same should happen to NSArray and NSDictionary for consistency in returning value types?
Edit: Or whether in fact it's more desirable to keep NSDate and NSData for reference types. But I guess that the NS-reference stuff is less swifty?

I want to avoid changing the API of UserDefaults.Proxy because I consider it a legacy API — and I strongly want to encourage people to use the new, static key-based API. In the latter, it's definitely desirable to change NSDate etc to new types. (But maybe still makes sense to keep the old one as deprecated to ease the transition? Just like I've kept DefaultsKey<NSArray> if it's easier for someone to use that...)

btw. thanks everyone for chiming in this discussion! I definitely intend to take a closer look and start an official swift3 branch sometime soon!

This code isn't going to be backward compatible, so I would say take the hit and make everything as swiftly as possible (this was a goal of the core swift team as well).
I looked at making a single code base that could compile in both environments but I don't think the code complexity would be worth it. Better to just make a hard fork.

I looked at making a single code base that could compile in both environments but I don't think the code complexity would be worth it. Better to just make a hard fork.

I agree as far as Swift 2/3 compatibility is concerned. The shipping version of SwiftyUserDefaults compiles just fine with Swift 2.3, so people can keep using that for as long as they need. Next version will be Swift 3-only.
Aside from that though, I want to make API transitions in the library itself as smooth as possible. Otherwise people get frustrated, stop updating, and in the end everyone's worse off. That's why there are still things in the codebase marked as "deprecated", but not removed completely.

@radex  when would you like to new swift 3.0 support branch

@radex when would you like to new swift 3.0 support branch

As soon as possible, sorry, just couldn't find time to do it just yet.

Thank you @askari01 for submitting this pull request and everyone for chiming in!
I merged this PR into swift3 branch: https://github.com/radex/SwiftyUserDefaults/tree/swift3
I will merge this into master when Swift 3 is out.
Be sure to submit pull requests if there's any issues on Swift 3, or if the library can be improved with Swift 3 changes! Thanks!


Propagate perm changes down hierarchy

Fix #278.
A follow-up ticket #279 has been created to clean up any unpropagated permissions.

I plan to merge this today, @gsfr take a look if you're interested in the fix.

👍


Pipelines / DAG

Currently QA-Board lacks expressiveness for our common use-case of:

Run on some images
Calibration
Validation
Likewise, we can't express easily pipelines like training-evaluation.

We need to express running series of steps / pipelines / tasks organized as directed-acyclic-graph.

We're looking for feedback or alternative ideas. Especially if you have experience with various flow engines, e.g. DVC. Thanks!

Workarounds
User have done this:

wrapped qa batch with a scripted pipeline
wrote complicated run() function with lots of logic

Possible API
batch1:
  inputs:
  - A.jpg
  - B.jpg
  configurations:
  - base

batch2:
  needs: batch1
  type: script
  configurations:
  - python my_script.py {o.output_dir for o in needs["batch1"]}

More complex:
my-calibration-images:
    configurations:
    - base
    inputs:
    - DL50.raw
    - DL55.raw
    - DL65.raw
    - DL75.raw

my-calibration:
    needs:
      calibration_images: my-calibration-images
    type: script
    configurations:
    - python calibration.py ${o.output_directory for o in depends[calibration_images]}

my-evaluation-batch:
    needs:
      calibration: my-calibration
    inputs:
    - test_image_1.raw
    - test_image_2.raw
    - test_image_3.raw
    configurations:
    - base
    - ${depends[calibration].output_directory}/calibration.cde

$ qa batch my-evaluation-batch
#=> qa batch my-calibration-images
#=> qa batch my-calibration
#=> qa batch my-evaluation-batch

Can we tip-toe with something simpler?
batch2:
  type: calibration
  needs:
    run: qa batch batch1
  configurations:
  - default
  - images: batch1

If we do the logic in run() well enough, we can get by. Here, when the input_type=="calibration", run() could call qa batch batch1 --list to find the results of the previous batch. And we could add a third step that reads and uses the calibration results...
Some details may be tricky to get right though:

Users need to write lots of logic, we could do it for them.
Can it be made non-blocking (yes, as all task schedulers including celery/lsf support task dependencies, but it requires extra machinery vs everything being a batch in the above API)? But with multiple layers of it we need to be careful.
In the end, but it's almost as complex as building a DAG. And building a DAG recursively is not difficult.

Thoughts

We should add built-in support for script input types, than just executes their config as commands. It goes well with DAGs.

my-script:
  needs: batch1
  type: script
  configurations:
  - echo OK

Expected

Easy API
Cache friendly
Can be used in a non-blocking way

Update: thanks to Itamar Persi and Ela Shahar, there is a pipeline implementation in "user-land":
my-pipeline:
  configurations:
  - run: echo "Step 1"
  - batch: first-batch
  - run: some-postprocessing-script.py

Nice features include using PIPELINE_OUTPUT_DIR or giving sub-batches custom labels..
Next steps

We'll contribute it to the project  on request as sample code (just comment here)...
...and incorporate the logic as part of QA-Board whenever possible, possibly as a default input type...


[WIP] 2i reviewer can claim step-by-step for review

Trello: https://trello.com/c/axseYRGB
This is a WIP. Things left to do:

Add "Claim 2i Review" action on overview page
Show who has claimed the review

@brucebolt Thanks for your comments. I've addressed them and fixed up.


populating using callback function with html data

Hi,
Can you please give an example of a cb function to populate the tree with HTML data rather than a JSON data?
Just like https://github.com/vakata/jstree#populating-the-tree-using-a-callback-function but with HTML.
For example, the html data is (taken from https://www.jstree.com/docs/html/):

Node 1

Node 2

Thanks.

After too many tries, decided to move to JSON instead, as it is the faster and preferred approach.
I no longer require a working example, but I think that if you can provide an example and add it to your docs it might benefit others.
On a side note, if you've done any testing as to how much faster the JSON vs HTML approach is, I think it's a relevant piece of info to put in your docs.


Embedded CPython 3.7b1 crashes on initialization

To reproduce, run any test that uses Python interpreter:
pyo3> cargo test -- objects::list::test::test_get_item

running 1 test
test objects::list::test::test_get_item ... FAILED

failures:

---- objects::list::test::test_get_item stdout ----
        thread 'objects::list::test::test_get_item' panicked at 'assertion failed: `(left == right)`
  left: `1`,
 right: `0`', src\pythonrun.rs:45:13
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::windows::backtrace::unwind_backtrace
             at C:\projects\rust\src\libstd\sys\windows\backtrace\mod.rs:65
   1: std::sys_common::backtrace::_print
             at C:\projects\rust\src\libstd\sys_common\backtrace.rs:94
   2: std::sys_common::backtrace::print
             at C:\projects\rust\src\libstd\sys_common\backtrace.rs:59
   3: std::panicking::default_hook::{{closure}}
             at C:\projects\rust\src\libstd\panicking.rs:382
   4: std::panicking::default_hook
             at C:\projects\rust\src\libstd\panicking.rs:390
   5: std::panicking::rust_panic_with_hook
             at C:\projects\rust\src\libstd\panicking.rs:576
   6: std::panicking::begin_panic<alloc::string::String>
             at C:\projects\rust\src\libstd\panicking.rs:537
   7: std::panicking::begin_panic_fmt
             at C:\projects\rust\src\libstd\panicking.rs:521
   8: pyo3::pythonrun::prepare_freethreaded_python::{{closure}}
             at .\src\pythonrun.rs:45
   9: std::sync::once::{{impl}}::call_once::{{closure}}<closure>
             at C:\projects\rust\src\libstd\sync\once.rs:227
  10: std::sync::once::Once::call_inner
             at C:\projects\rust\src\libstd\sync\once.rs:340
  11: std::sync::once::Once::call_once<closure>
             at C:\projects\rust\src\libstd\sync\once.rs:227
  12: pyo3::pythonrun::prepare_freethreaded_python
             at .\src\pythonrun.rs:38
  13: pyo3::pythonrun::GILGuard::acquire
             at .\src\pythonrun.rs:254
  14: pyo3::python::Python::acquire_gil
             at .\src\python.rs:106
  15: pyo3::objects::list::test::test_get_item
             at .\src\objects\list.rs:209
  16: test::run_test::{{closure}}
             at C:\projects\rust\src\libtest\lib.rs:1446
  17: core::ops::function::FnOnce::call_once
             at C:\projects\rust\src\libcore\ops\function.rs:223
  18: alloc::boxed::{{impl}}::call_box<(),closure>
             at C:\projects\rust\src\liballoc\boxed.rs:788
  19: panic_unwind::__rust_maybe_catch_panic
             at C:\projects\rust\src\libpanic_unwind\lib.rs:102
  20: std::panicking::try
             at C:\projects\rust\src\libstd\panicking.rs:458
  21: std::panic::catch_unwind
             at C:\projects\rust\src\libstd\panic.rs:358
  22: test::run_test::run_test_inner::{{closure}}
             at C:\projects\rust\src\libtest\lib.rs:1414

failures:
    objects::list::test::test_get_item

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 116 filtered out

Version info:
> python
Python 3.7.0b1 (v3.7.0b1:9561d7f, Jan 31 2018, 07:26:34) [MSC v.1900 64 bit (AMD64)] on win32

> rustc --version --verbose
rustc 1.25.0-nightly (29c8276ce 2018-02-07)
binary: rustc
commit-hash: 29c8276cee4a0eab7e0634ff25c6b47bd9f87c6c
commit-date: 2018-02-07
host: x86_64-pc-windows-msvc
release: 1.25.0-nightly
LLVM version: 4.0

pyo3> git log -1
commit 63a2066a39a6389f24ed1d5acda322425ade0937 (HEAD -> master, origin/master, origin/HEAD)
Author: Nikolay Kim<EMAIL_ADDRESS>Date:   Fri Jan 19 10:27:37 2018 -0800

    can not use workspace for examples

They say  Py_Initialize() should be called before using any other Python/C API (with the unspoken exception of Py_IsInitialized(), I assume). So I tried swapping the assertion and the initialization call in https://github.com/PyO3/pyo3/blob/8b7a57891bf959261716db169c7b0711bc03e1fc/src/pythonrun.rs#L44-L51
But it did not help.
I think this has something to do with the very recent change https://github.com/python/cpython/commit/2914bb32e2adf8dff77c0ca58b33201bc94e398c#diff-baf5eab51059d96fb8837152dab0d1a4R689 , where they began calling PyEval_InitThreads() inside Py_Initialize().

@Vlad-Shcherbina are you interested in pyo3 project? would you be interested to join project? seems you know what you are talking about :)
I don't have much time for this project at the moment.

I'm interested in the project. What do you mean by joining? Commit access and some maintenance responsibilities? Let's see how it goes.
For now I can say that I'm likely to fix the things that bother me.

Yes, all of it. Commmit access, maintenance, feature development. But just in general, project is healthier if several developers knows how everything work and can continue development.
As a side note, seems specialization soundness get resolved, so we should be able to compile pyo3 on stable by the end of the year or even earlier.


Allow the usage of AWS Credentials objects

Since gulp-awspublish passes through Credentials configuration objects, I thought it would be nice if this plugin did that as well. This way, instead of loading the credentials manually or putting them in environment variables, they can be loaded any way that the AWS SDK supports.
e.g.:
var awsCredentials = new AWS.SharedIniFileCredentials({profile: 'myprofile'});
var publisher = awspublish.create({
	region: 'us-east-1',
	params: {
		Bucket: 'my_bucket'
	},
	credentials: awsCredentials
});
var cfSettings = {
	credentials: awsCredentials,
	distribution: 'my_cf_dist'
};

thanks for this plugin!

Thanks for the PR


docs: add RFC template

Signed-off-by: Ruihang Xia<EMAIL_ADDRESS>Which issue does this PR close?
Closes #
Rationale for this change
Template for our RFC!

What changes are included in this PR?
Add docs/rfcs/, it contains text/ for rfc markdown and resource/ for images.

Are there any user-facing changes?
no

How does this change test
no need

It seems hard to look up the docs if the file is named after date. Should we name these files according to its content?

What does the .gitkeep do?

It seems hard to look up the docs if the file is named after date. Should we name these files according to its content?

The date is one part of file name. It should follow by feature name, like 20220616-prom_remote_storage.md

What does the .gitkeep do?

Empty dir won't be tracked by git. That is a placeholder.

LGTM


CDS: remove warming cluster if CDS response desired

Commit Message:
Remove both the active cluster and warming cluster if CDS response told so.
Fixed both SotW and Delta.
Additional Description:
Risk Level: Mid since the bad behavior exist for long time.
Testing: Fixed unit tests and integration test. Added new integration test.
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
Fixes #13994
[Optional Deprecated:]

merged master to resolve conflict


Numeric literals

https://golang.org/ref/spec#Integer_literals
https://golang.org/ref/spec#Floating-point_literals
https://golang.org/ref/spec#Imaginary_literals

These should be supported using the same syntax (or at least close) as in Go.
Could untyped literals be avoided in favour of something like http://dev.stephendiehl.com/hask/#numeric-tower. That would demand type classes.

Closing this as we have int and float64 literals. Overloading can be implemented using protocols if needed later.


Feature request: make the KarateRuntimeOptions more flexible

Hello Peter,
I have a Spring Boot application in which I launch my Karate tests at runtime, meaning that the cucumber features will be bundled in a jar (or a bootJar to be more precise). I'm using the Cucumber's parallel runner (CucumberRunner).
Since Spring Boot manages by itself its jar, the MultiLoader used by KarateRuntimeOptions will not be able to discover the features on the classpath, as described in this issue.
I was able to use my own ResourceLoader, and everything works fine, but I had to extend KarateRuntimeOptions and pretty much override everything and modify the class loader, which is not very lenient in case of any modification in the current API.
Sorry if I don't have a very precise request, since I'm not sure what's the best way to resolve that, and for having a pretty farfetched use-case, but I can say for sure that on the long term it might be a good idea to make KarateRuntimeOptions a bit more flexible.
If you want a demo project with my use-case and my solution, I'm more than willing to provide it.
Thank you very much

Oh yeah, saw your tweet on removing Cucumber :)
I'll try your branch with pleasure. Thank you very much and I'll come back to you soon

So I tried the most recent version of you branch. There seems to be some issues at the moment:

When launching locally, on IntelliJ and with Gradle, Karate is not able to find the .feature files in the current classpath. It will try to find the files in the /out/production/classes directory, but will only find .classes files, since .features files are moved to a special /out/production/resources directory that is not taken into account now. I'm not sure whether it is a Gradle or Intellij-specific error, but previously the Cucumber's ClasspathResourceIterable that was wrapping a URLClassLoader was able to resolve the resources.
In a packaged application, when using CucumberRunner#parallel(Class<?>, int, String) and resolving the class relative to classpath (using FileUtils#toRelativeClassPath(Class)), I've got a odd ProviderMismatchException in FileUtils#toRelativeClassPath(File) when trying to relativize the rootPath (the rootPath being resolved to / by getClassPathRoot()).
Again in a packaged application, when using CucumberRunner#parallel(List<String>, List<String>, int, String), with the second parameter (paths) being a singleton list of classpath: + package of the class launching the tests, the method FileUtils#getPathFor(String) will be called twice in FileUtils#scanForFeatureFiles(String), and will trigger twice FileSystems.newFileSystem with the second time logically failing with a FileSystemAlreadyExistsException.

Would you like a sample project in which we can easily reproduce these steps ?

@celcius112 awesome, thanks !  So by "packaged" application, I assume you mean it is a JAR ?
ideally I'd like the sample project to be included in the gradle project side-by-side with the karate-demo maven project: https://github.com/intuit/karate/blob/master/karate-demo/build.gradle
I was resisting running this as part of CI until now but maybe we should.
Hopefully even the creation of a JAR can be stuffed into the same project and we can run some tests to test all scenarios, would you be able to take a look at those ?
By the way I'm right now working on getting the Intelli-J "right-click-and-run" working with the new Cucumber-free situation. As of now the IDE results (green bar etc) is broken, but do see if you spot any other issues !

@celcius112 nevermind, tried to work on all 3 issues and I think fixed.
checked in a tiny jar file with some feature-files bundled, including relative-path call complications. here is the test: https://github.com/intuit/karate/blob/ef22ef37fb4e2511c4bb2e9a6eb182d2dd1b8daf/karate-junit4/src/test/java/com/intuit/karate/junit4/files/JarLoadingTest.java

Thank you @ptrthomas !

So by "packaged" application, I assume you mean it is a JAR ?

Yep exactly :).
So if we come back to my 3 points:

Works well for me ! But I still had to add a small but weird modification in FileLogAppender#collect. If I run locally with your branch as it is, I've got a java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip in the bug.flip() call in the aforementioned method. I've found this Github comment that proposes to use the strange ((Buffer)byteBuffer).flip(), which works for me. I say strange because the variable buf is of type HeapByteBuffer at runtime, which inherits from ByteBuffer and Buffer and should thus have access to flip(). For your interest I'm running this program on JDK 8.
The small bugs in points 2 and 3 seem to be fixed :) However we are still coming back to my initial point, which is to be able to detect the feature files in a Spring Boot jar. Unfortunately it has the same behavior as before. But with your code you were still able to provide more information for my research, and I found this Spring Boot issue that seems to explain that ZipFileSystem has few limitations regarding fully-executable jar. Andy Wilkinson proposes this Spring-specific solution, which is also my current solution for resolving feature files and works when trying it on your branch by replacing Files.walk(searchPath) in collectFeatureFilesFromJar(). Again it seems to be very Spring-Boot-specific, and might be difficult to implement as it is in Karate, but maybe we can find a way to plug a lenient solution for those in need 😢 ?
Here's another related issue: https://github.com/spring-projects/spring-boot/issues/7161

@celcius112 great ! I think it is time you submitted a PR. I've honestly reached the limit of my patience struggling with the weirdness of the nio Path API all weekend :|

@ptrthomas ok, hold my 🍺 (might take some time though)

whoops, I should have read this thread...

@celcius112 @jlee70 - I took another look at this and see the last commit above, I think I have been able to solve scanning within JAR files. we were missing adding anything in JAR files to classpath scanning earlier.
would be great if you can build fro source and test.

Hello @ptrthomas,
I couldn't test you classpath modification thoroughly for diverse reasons, but I did find a possible issue.
I have a feature file being called in my karate-config.js. This file is correctly called, but the Scenario step seems to be blocked without any exception thrown. The Background step seems to work correctly though.
Further information:

I call this feature file with karate.call()
I'm passing some parameters, which are usable in the Background step (so I know they are correctly passed)
I'm calling the feature file using the classpath: classpath:path/file.feature. I know it is correctly called since the Background step is launched

@celcius112 sorry I won't be able to look at your issue unless you submit a full working example as per the instructions here: https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue

Hello @ptrthomas.
Loading from jar worked fine for me. Now, I am trying to run feature with Report.
This procedure for me seem to work to generate report.
Please correct me if I am doing wrong thing.
I was following JarLoadingTest in the com.intuit.karate.junit4.files package.
 Feature feature = FeatureParser.parse(resource);  CallContext callContext = new CallContext(null, true); //I want report so Engine is my option.  FeatureResult result = Engine.executeFeatureSync(feature, (String)null, callContext);  File resultFile = Engine.saveResultHtml("target/surefire-reports/", result);
In my prototype, I am able to serve generated html in boot app and seems to work for my need and nice.
Only request I have is that it will be nice if I can specify file name in  Engine.saveResultHtml call. So I can bind dynamic test run with report.
thank you very much.

oh thank you.
For karate-config.js, according to my debug tracing, karate-configuration gets loaded through
public ScenarioContext(FeatureContext featureContext, CallContext call) {
...
if (call.parentContext == null && call.evalKarateConfig) {
// base config is only looked for in the classpath
try {
//Is there a way to inject specified config at this point?
Script.callAndUpdateConfigAndAlsoVarsIfMapReturned(false, ScriptBindings.READ_KARATE_CONFIG_BASE, null, this);
} catch (Exception e) {
if (e instanceof KarateFileNotFoundException) {
logger.trace("skipping 'classpath:karate-base.js': {}", e.getMessage());
} else {
throw new RuntimeException("evaluation of 'classpath:karate-base.js' failed", e);
}
}
...
I was imagining if  we could make the passed CallContext had some specified config and based on file existence, we could inject specified confige there...


自从用了这个，废了，切换源也连不上

自从用了这个，废了
UnavailableInvalidChannel: The channel is not accessible or is invalid.
channel name: anaconda
channel url: https://anaconda.mirrors.sjtug.sjtu.edu.cn/anaconda
error code: 403
You will need to adjust your conda configuration to proceed.
Use conda config --show channels to view your configuration's current state,
and use conda config --show-sources to view config file locations.

移除 ~/.condarc 试试

sorry for that
sjtug pypi/conda mirror already removed from the script now.

https://anaconda.mirrors.sjtug.sjtu.edu.cn/anaconda
https://mirror.sjtu.edu.cn/pypi/web/simple/

please git pull and switch ur conda mirror with latest script.


Include MDN links in property IntelliSense

I'm sure I've mentioned this before or discussed it in another issue, but I couldn't find anything specifically about it in the existing issues.
I'd like to be able to hover over, e.g. background-color and - besides the description that's already there - have a clickable link to the MDN documentation for the property.
What it looks like right now:

The browser-compat-data package includes mdn_urls for most (all?) CSS properties, so it should be possible to derive the documentation links from that package, like is already done for browser support.
https://github.com/mdn/browser-compat-data/blob/3268af01c1bf6059f3d7a25c1c212ac4522c291f/css/properties/background-color.json#L6
There's a similar issue for the HTML service: https://github.com/Microsoft/vscode-html-languageservice/issues/12

I'll probably do it in May. There is a requirement that if a MS product links to external websites, it needs to get explicit consent from user. That means we can't just embed the link directly.
Also there are work that needs to be done to convert the auto-completion's documentation to use Markdown format.

@octref how would you imagine the consent process to be? A notification the first time they run the extension that would toggle a boolean setting, or would it be a popup that shows itself every time someone clicks the link (I assume it would have an 'Always Allow' option)? And would you accept a PR that introduced that behavior? :)
It wouldn't really serve any purpose without the links/markdown formatting implemented, I just want to help get it going.

A notification the first time they run the extension that would toggle a boolean setting

Notification on first time clicking an external link of specific domain, say https://developer.mozilla.org. If user accepts, it's added to a setting (or cache?) and wouldn't show notification next time.

And would you accept a PR that introduced that behavior?

Not yet, I'll work on this in June. https://github.com/microsoft/vscode-css-languageservice/issues/132 needs to happen first. I also want to make sure for custom loaded data, people can do similar things such as linking custom properties to their doc websites.

🎉


IceGitCliLocalBranch>>#setUpstream: is unimplemented

IceGitCliLocalBranch>>#setUpstream: is unimplemented
This is triggered in some rare circumstances. For example, in a clean image do GtIceRepositorySwitcher switchAll, open the Git tool and select the XML-XPath repository.

This was reported before

Fixed with https://github.com/feenkcom/iceberg-git-cli/commit/6afade158ab3affef75cfedf12443ba43bfe4b45


implement throttling, limit api calls to 100 per minute

limit a user from sending more than 100 api calls per minute
closes #331

This looks great to me! Just wanted to check with @gaurav-arya @n8kim1 : I suggested 100/min out of the blue but don't actually know what the frontend needs- can you confirm?

 Then clicking around, takes, like, 2 API calls max per button press, unless state is reloaded so that's 6 uhhh
one click per second max?
300 calls/min? 400 calls/min? is a conservative upper bound. is that too high? @gaurav-arya et al

I'm good with either:) worst case would be someone spam refreshing I guess, so then something liike 400 would be safer? But happy to merge with either number, so I'll leave it up to @apollo1291's judgement?


[core] Skip sx prop in internal components

[ ] I have followed (at least) the PR section of the contributing guide.

I don't have hard preference, I've created the PR as we discussed that already on one of the pickers PRs. @eps1lon do you have opinion on this? If not I will close the PR without merging.


Skip vault cert task evaluation when using script certs

At 350 node scale, such messages are in play recap, even though cert_management == "script"
01:27:03 kubernetes/secrets : sync_file | Combine all possible key file sync sources - 587.58s
01:27:03 kubernetes/secrets : sync_kube_node_certs | Create list of needed certs - 542.36s
01:27:03 etcd : sync_file | Combine all possible file sync sources ------------- 379.07s
01:27:03 etcd : sync_file | Combine all possible key file sync sources --------- 365.95s
01:27:03 etcd : sync_etcd_node_certs | Create list of node certs needing creation - 365.29s

ci check this

Looks good, besides my single comment. That was not caused by this PR however.


[CARBONDATA-3415] Merge index is not working for partition table. Merge index for partition table is taking significantly longer time than normal table.

Problem:
(1) Merge index is not working for partition table.
(2) Merge index for partition table is significantly more than the normal carbon table.
Root cause:
(1) Merge index event listener is moved to preStatusUpdateEvent in #3221 . But preStatusUpdateEvent is not triggered in case of partition table. Test case to validate merge index on partition table is also wrong. Not caught in the test builders.
(2) Currently, merge index job will trigger tasks like one segment one task. But for a partition table, there are partitions in a segments and merge index is for partitions. So per segment it has to iterate and merge the index files inside partitions, because of this the time is little more when the number of partitions are high. Number of Tasks = Number of Segments.
Solution:
(1) Correct the test case and trigger merge index listener for partition table.
(2) Parallelize the tasks launched to the partitions. Number of tasks = Number of partitions in a segment

[ ] Any interfaces changed?

[ ] Any backward compatibility impacted?

[ ] Document update required?

[x] Testing done
UT Changed

[ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.

Build Failed  with Spark 2.3.2, Please check CI http://<IP_ADDRESS>:8080/job/carbondataprbuilder2.3/11722/

Build Failed with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/3658/

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.1/3456/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.1/3457/

Build Failed  with Spark 2.3.2, Please check CI http://<IP_ADDRESS>:8080/job/carbondataprbuilder2.3/11724/

Build Failed with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/3660/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.1/3460/

Build Failed with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/3663/

Build Failed  with Spark 2.3.2, Please check CI http://<IP_ADDRESS>:8080/job/carbondataprbuilder2.3/11727/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.1/3464/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.1/3465/

Build Failed  with Spark 2.3.2, Please check CI http://<IP_ADDRESS>:8080/job/carbondataprbuilder2.3/11732/

Build Failed with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/3668/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.1/3522/

Build Failed with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/3725/

retest this please

Build Failed  with Spark 2.3.2, Please check CI http://<IP_ADDRESS>:8080/job/carbondataprbuilder2.3/11793/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.1/3526/

Build Failed with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/3731/

Build Failed  with Spark 2.3.2, Please check CI http://<IP_ADDRESS>:8080/job/carbondataprbuilder2.3/11798/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.1/3535/

Build Success with Spark 2.3.2, Please check CI http://<IP_ADDRESS>:8080/job/carbondataprbuilder2.3/11809/

Build Success with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/3742/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.1/3549/

Build Success with Spark 2.3.2, Please check CI http://<IP_ADDRESS>:8080/job/carbondataprbuilder2.3/11823/

LGTM

Build Success with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/3755/

LGTM

Thanks for your contribution!


Batch demuxing

Hi Stax,
Could you tell me how I can do batch demuxing.
I know it used to be in the older versions, but I can no longer see the checkbox in the batch processing window.
I want to be able to demux all the files added first, then go though and edit the conversion settings.
Thanks

I too used to use this feature all the time.
This also was my work-around for my continued issues of clicking open source and then stax just doing nothing. Check task man and no processing, network, or disk activity. Large and small files, network and on local SSD.

This is the main reason i'm still using 1.4, but now that that's broken I second this request.


Request for Additional Code, Random Seed, or Specific Style Prompt Information to Reproduce Qualitative Results

I am currently engaged in research that builds upon the concepts presented in your paper. In order to validate our findings and compare them with your results, we are attempting to reproduce the qualitative results from your paper. However, we have encountered difficulties due to the unavailability of certain codes, random seeds, or specific style prompt information.
Therefore, I kindly request your assistance in providing the following:

Any additional code or scripts that were used to generate the qualitative results presented in your paper.
Information about the random seed(s) or saved initial Gaussian noise used in your experiments.
Any specific style prompt information that may be relevant to the qualitative results.

Having access to this information would greatly facilitate our efforts to reproduce and build upon your results, ensuring the validity and comparability of our research. Rest assured that any provided code or data will be used solely for the purpose of academic research.
Thank you very much for your attention to this matter. I look forward to your response and hope for the opportunity to discuss this further.

The list of prompts we used for evaluation is provided in the appendix of our paper (last two pages).
We generated the 4 "style aligned" images for each prompt using DDIM sampler with 50 steps.
The sampled noise for each image can be found here.

Oh, boi.


Generate <link rel="modulepreload"> directives for entry chunks and their direct imports

Description
ViteJS has a feature "Preload Directives Generation" that will automatically generate <link rel="modulepreload"> directives for entry chunks and their direct imports:
https://vitejs.dev/guide/features.html#preload-directives-generation
This PR introduces this feature. AsManifestHelper::extractManifestTags() parses the manifest content for the given entry point, it adds a new import type of tag for every file found in the imports key.
Then every tag of type import is output as <link rel="modulepreload">. It also sets crossorigin to the same value as the given entry point.
Note: It does not include files found in the dynamicImports key, as the ManifestHelper::extractCssTags() does. I am not certain if this is the right call or not. But it at least is in line with how Vite does it: https://github.com/vitejs/vite/blob/main/packages/vite/src/node/plugins/html.ts#L283-L295
Note 2: Vite appears to have the ability to include a polyfill for the modulepreload tag, which is not included in this PR. https://github.com/vitejs/vite/blob/main/packages/vite/src/node/plugins/modulePreloadPolyfill.ts

Thanks for the PR -- I skipped this initially, glad to have it back in.
Did you implement this for the register() methods too?

@khalwat Ah - commit 4716259 has just been pushed, which now implements on register().

I've discovered that this generates <link rel="modulepreload"> tags for legacy script imports as well, which means that modern browsers (supporting type="module") still end up downloading any legacy imports. I'm investigating a refactor to address this. Also looking to add the polyfill...

Commit 582b7a8 is a refactor to prevent adding <link rel="modulepreload"> tags for imports coming from legacy entry files. Refactor covers both the script() and register() functions.
Also introduce polyfill, for browsers that support type="module" only. The polyfill JS is adapted from https://github.com/guybedford/es-module-shims in the same way that Vite has adapted it: https://github.com/vitejs/vite/blob/5c0f0a362f669e3d38ddc51bfdd9d424a7c08feb/packages/vite/src/node/plugins/modulePreloadPolyfill.ts#L33-L100

Looks great, many thanks!

I am not sure if the Vite plugin actually uses dynamicImports for the css files:

It doesn't, the Vite plugin just scours that to look for generated CSS files. It traverses all of the imports that a file you provide to .register() or .script() uses, and includes any found CSS files in the list of CSS to include for a given page.
Traversing the dependency graph is the only way to find all of the CSS that a given module (or any of its dynamically imported modules) use.

@khalwat Indeed that's what happens it generates all the files on disk but they have the html plugin generating script and link tags based on the type of import. I think the plugin is used by most web based project. Basically when you start providing you own custom output it stops using the plugin and you are on your own.
output: {
    assetFileNames: 'resources/[ext]/[name][extname]',
    chunkFileNames: 'resources/chunks/[name].[hash].js',
    entryFileNames: 'resources/js/[name].js',
},

I am not using Craft CMS but Adobe Experience Manager (Java in the backend instead of PHP). But I think the end result is the same for both CMS systems. Based on the manifest I can detect which files are dynamicImports and don't need to be included in the link/script generation that happens by the Java backend. I have no idea if that's even possible with Craft CMS but with my CMS the frontend will just request those dynamic files (be it CSS of JS) on the fly when needed.
I just came across this PR when looking for code examples of people trying to do the same as me ;)


Trial issue with Education Licences

Hi,
We have the dynamics CRM 365 as part of the academy program.
We would like to install the chat functionality but in the administration panel I do not see how to activate the trial of this option.
can you please advise ?
Thanks in advance,
Léo

@leodsti
Please see if you can get your question answered here:
https://powerusers.microsoft.com/t5/Power-Apps-Community/ct-p/PowerApps1
Or create a support request:
https://powerapps.microsoft.com/support/


improvement i routing

page refreshes everytime whenever we go to another link
https://github.com/user-attachments/assets/212b2146-b513-4dac-b991-c53689d5a26c
I'll be able to fix this issue please assign me

you can go ahead @STXRSHIVA


assert in encode.c at #289 always

This assert happens always with any input. Any ideas?
/* If we don't have a match at bestLength, don't even bother... */
if (UNLIKELY(pos[bestLength] == pos2[bestLength]))

Without any more info (and with quite some time between now and when I wrote the code): I think that the case is very likely to happen for at least one position in the data stream. How often is the branch being taken in your tests? >1%? >10%? Maybe the "UNLIKELY" annotation is not really motivated?


Ubuntu 18.04 slow performance

Describe the bug
When I run ubuntu 18.04 after the logo with dots the black screen appears and it doesn’t load the OS.
For simply run the OS I should put the memory at max. But it still really slow, impossible to interact with it.
Version
2.0.11.
To Reproduce
Steps to reproduce the behavior:

Run the Ubuntu 18.04 utm file
It opens the UTM VM
Animation loading...
Stuck on black screen

Expected behavior
It should work normally.
Additional context
No ability to hold mouse button and move pointer at same time.

Duplicate of #567

@daniellaera I see you confused in my previous comment, so are you using utm in macOS or in iPhone/iPad/iPod?

@daniellaera I see you confused in my previous comment, so are you using utm in macOS or in iPhone/iPad/iPod?

I am running Ubuntu on the Apple M1 and I tried with the 18.04 desktop provided by UTM VMs and the I tried with the 20.04 LTS and it is impossible to interact with, mouse doesn’t select element when in the virtual environment

There's two separate issues here. The performance issue is due to the fact that UTM currently does not virtualize the CPU (and if it did, you would need to run the aarch64 version). The emulation is slow even on a fast processor like the M1.
The mouse issue is a Ubuntu driver problem that you can get by running it directly with QEMU. You would have to uninstall some driver (can't remember what right now) that is baked into the live cd.
Finally there are still mouse issues with UTM for macOS that are being tracked in another issue so I'll close this as a duplicate of #710

Duplicate of #710


Move remaining files in workerd/util to KJ_IF_SOME

Bug: EW-7618
Test: bazel build //...

Failed to download node test failures...


stop propagation of mouse click event for marker

It looks like, that the marker click event is propagated to the the map and in my case unintentionally does also fire the click event on the map.
I can't find a way to stop propagating this event, as the event of the marker click does not have the originalEvent to call stopPropagation().
Any idea?

As a workaround I've put the click event handler not on the marker, but rather the icon with: @click.stop="function"


feat: Compare FAISS v/s Qdrant Vector Store

Key learning described in Issue 30 Issue #30

Closing, will be using Qdrant for tutorial


bug(md-slide-toggle): slide toggle should fit to it's content width

Fixes #3230

Please update the demo-app to have each md-slide-toggle element in its own row.
Also we should ensure that the baseline still works properly for the slide-toggle. See the baseline/ route.

@DevVersion I've updated the demo app to show each slide-toggle on it's own row, but there are no slide-toggle on the baseline route. Should I add it there?

@DevVersion is there anything else that needs to change here?

@jefersonestevo Sorry for the delay. I will look into it tomorrow!

Thanks for the PR. I think we should consider this as a breaking change? @jelbourn

In the issue I don't quite follow what you mean by "selectable area"- could you elaborate?

@jelbourn if you look in this Plunker you can see that, anywhere in the gray area that you click, you'll change the value from the slide toggle (it uses all the available width from it's parent container). The same doesn't happen with the md-checkbox, that fit's just to it's content width.


Expose WebRTC logging via user callback

Allow the user to register a callback invoked each time a message is
logged by the internal WebRTC implementation. This allows better error
reporting and easier debugging without the need to connect a debugger or
even have debug symbols available (PDBs).

Note that:

There is no Unity library change; didn't think about whether there's something needed or not yet. This change only expose to the C and C# libraries.
This requires patching the Google m71 branch due to a "bug" (missing severity argument) fixed in a later version, hence the change in submodules. The change has already been applied to webrtc-uwp-sdk.
Removing the branch argument from .gitmodules which is confusing (does not do what most people expect, and anyway we don't use the releases/m71 branch anymore but mrwebrtc which is branched from it).


[EPIC] Support multitenant cluster with user tools

[ ] https://github.com/NVIDIA/spark-rapids-tools/issues/215
[ ] https://github.com/NVIDIA/spark-rapids-tools/issues/325
[ ] https://github.com/NVIDIA/spark-rapids-tools/issues/326

Comments from @tgravescs:
We haven't had many customers using shared YARN clusters - like on Dataproc until recently. We should try to come up with recommendations on properly utilizing resources there. Meaning if running in yarn cluster mode the driver also runs on the same nodes as the executors which may use memory/cores and then leave idle GPUs.

Ideally we should come up with a recommendation for perhaps putting drivers on cpu nodes (if that is possible on Dataproc/others), or just allocating node sizes that leave some resources on nodes available for non-gpu containers, etc.

Closing as we now support detection of resources used in qualification from CPU event log


Merge bootcfg HTTP server and gRPC server

Fold the cmd/bootcfg-rpc/main.go gRPC test server into the main bootcfg binary to start providing gRPC support. Decide whether to run the services on different ports or to multiplex.

For now, these will run on independent ports configured by -address=<IP_ADDRESS>:8080 and -rpc-address=<IP_ADDRESS>:8081. Leaving off the RPC address flag means the experimental RPC server won't be started.


Flush lines doesn't stay open

Water stops coming out. Check to see how long the valve stays open in the code.
@NgD-Huy Notes that sometimes after the water has stopped coming out and then you press "close" then more water comes out!

@alexpiet could you point me towards any documentation for how the RigClient works? I've tracked down that the code that opens the flush lines, but am getting stuck understanding what values correspond to what actions when calling functions within RigControl

I'm not sure anything is documented. RigClient sends messages (via OSC) to the bonsai workflow. Do you know how to open the bonsai workflow?
@XX-Yin is the bonsai workflow documented anywhere?

@XX-Yin Specifically, I'm confused what the value arguments correspond to for some of the RigControl functions. Like here in the code
        if self.OpenLeftForever.isChecked():
            # change button color
            self.OpenLeftForever.setStyleSheet("background-color : green;")
            # set the valve open time
            self.MainWindow.Channel.LeftValue(float(1000)*1000)
            time.sleep(0.01)
            # open the valve
            self.MainWindow.Channel3.ManualWater_Left(int(1))

Is the argument for LeftValue the time it stays open or is it like a mapped value specifying something? If it's the time, what unit is it? Is that something I can find in the bonsai workflow?

@micahwoodard The self.MainWindow.Channel.LeftValue sends the valve open time to the bonsai through OSC message.
@alexpiet This is a known issue for me. I tried to keep the valve open forever by setting a very large valve open time, but it seems that there is a largest valve open time in the harp behavior board. After exceeding the largest valve open time, the valve will be closed automatically.

@micahwoodard The unit is ms

Hmm maybe I can implement a thread logic to keep setting the valve open time to the highest number until the button is clicked to close? That could be a way around this limit. Ella tells me it only stays open for 15-20 seconds. Is this the limit you're seeing too @XX-Yin ?

@micahwoodard I think it should work. Set the valve open time to be a little smaller than the maximum open time (e.g. 15s), and reopen the valve after 15s.


updated dependencies @babel/parser and @babel/traverse

This enables support for the latest typescript syntax (e.g. as const).
Fixes #274.

Coverage remained the same at 100.0% when pulling 64360dc01f1f9ac44c08c7e547c939882f490df0 on fabb:update_babel_dependency into ca0383a88798eccb5a7295e1423b1ad5c62438c3 on styled-components:master.

@fabb Thanks for your PR. According to https://github.com/styled-components/stylelint-processor-styled-components/issues/274#issuecomment-523025622, it can be unmodified.


Diag: Correct message for protocols with multiple superclass requirements

Cherry-picked from #24035 to land this quicker.
cc @xedin

@swift-ci Please smoke test


fix(sdk): duplicate instance

Summary
Root Cause
The function checkWallets is called multiple times, which creates different wallet instances for the same wallet class. Because of this, even though registered is a Set, it still ends up adding multiple duplicate wallets.
https://github.com/rooch-network/rooch/blob/b98ce6fefb1433d861f9d292a900b681f62c3352/sdk/typescript/rooch-sdk-kit/src/wellet/wallets.ts#L6-L8
How to Fix
At the SDK level, each wallet class should have only one instance.

Closes #2779

@wow-sven @jojoo-eth help review


Add first custom cops

Install rubocop-github as default config
Add Codeur/RailsAppPatterns cop
Add Codeur/RailsAvoidInstanceMethodsInHelpers cop
Adjust gem structure
Add GitHub Actions workflows: test.yml and quality.yml (brakeman + rubocop)

Also can we disable https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Lint/MissingSuper ?

Also can we disable https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Lint/MissingSuper ?

Yes, I'll change that