New property to force swiping in a single direction

Referring to discussion in #4 I added a new property - i.e. single-direction to force the swiping to work only in the same direction eventually specified by swipeLeft or swipeRight property.
When single-direction property is set on <paper-swipe> the component can only swipe towards the edge chosen.
This PR does NOT introduce any breaking change.
I also added two demo blocks.

@leodido So basically you want the following behavior, am I right?

swipeLeft
swipeRight
Expected result

0
0
no swiping is allowed (which is equivalent to disableSwipe is set

0
1
ONLY swipe to the right

1
0
ONLY swipe to the left

1
1
Can be swiped to either side

where 0 equates false while 1 equates true

Hi @motss, not exactly.
I think it is correct that this component always swipe (except when user explicitly disables it), since it's called <paper-swipe>.
Simply it should also be able to constrain the swiping direction (1st aspect). Indeed now there is not a way to disallow entirely the swiping in the opposite direction. This was the reason for the introduction of the singleDirection property.
In #4 I was referring to the meaning of swipeLeft and swipeRight properties. Infact they currently simply refer to the edge to which the swipeable container pins at when swiping (2nd aspect).
I think this is the current behavior.
| swipeLeft  | swipeRight | Container edge to which it pins at  | Swipes to left  | Swipes to right  |
|:-:|:-:|:-:|:-:|:-:|---|
| 0 | 1 | right | yes  | yes and pins  |
| 0 | 0 | both | yes and pins  | yes and pins  |
| 1 | 0 | left  | yes and pins  | yes  |
| 1 | 1 | both  | yes and pins  | yes and pins  |
Rather the behavior I'm trying to introduce (and to complete) with this PR is.
Assuming singleDirection is not set (i.e. false).
| leftPeek  | rightPeek | Container edge to which it pins at  | Swipes to left  | Swipes to right  |
|:-:|:-:|:-:|:-:|:-:|---|
| 0 | 1 | right | yes  | yes and pins  |
| 0 | 0 | both | yes and pins | yes and pins |
| 1 | 0 | left  | yes and pins  | yes  |
| 1 | 1 | both  | yes and pins  | yes and pins  |
Assuming singleDirection is set (i.e. true).
| leftPeek  | rightPeek | Container edge to which it pins at  | Swipes to left  | Swipes to right  |
|:-:|:-:|:-:|:-:|:-:|---|
| 0 | 1 | right | until reaches the left edge  | yes and pins  |
| 0 | 0 | both | yes and pins (singleDirection not applicable) | yes and pins (singleDirection not applicable) |
| 1 | 0 | left  | yes and pins  | until reaches the right edge  |
| 1 | 1 | both  | yes and pins (singleDirection not applicable)  | yes and pins (singleDirection not applicable)  |
What do you think about?
If you agree I could proceed with another commit.

@leodido I like the idea of disallowing the element to swipeable element to left when swipeRight is set and vice versa. As you know, the current one will move the swipeable element back to its original position  while you're dragging it to the opposite direction. That is totally intended to indicate that you're not allowed to swipe to the opposite direction no matter how hard you try but the current outcome is like what you mentioned (you can swipe to both direction but the swipeable element is pinned at, say right when swipeRight is set).
This is my proposal and feel free to leave comments:

Change the name of singleDirection to noOppositeSwipe (is this better?)
Instead of having another method _directionAllowed, maybe we can modify somewhere so that you can still swipe to the opposite direction but you don't see the swipeable element moving at all as the swipeable element has been restricted to just one direction, left or right. Your approach works fine except you didn't account for the situation where the user might want to swipe to the opposite direction first. When swipeRight is set, you try to swipe to the opposite direction first which is left then you will soon realize that you can no longer swipe to the right unless you trigger the _upHandler event to release tracking. In short, users are allowed to swipe to either directions but the drawer is only allowed to move in only one direction.
If possible, please help me to remove the iron-resizable-behavior import, iron-resize event listener, and the _resize method.

Agree for noOppositeSwipe, very good name.
Already got rid of IronResizableBehavior
Locally I removed IDE files (i.e., .idea/ commited folder) and inserted them into .gitignore. I think they should not be in the repo. Can I commit this change?
Since the track event is on the host and not on the swipeable content I think we should restrict it. E.g., when dragging/swiping on the orange part (see demo) the drawer should not respond. Locally I've a working solution. If you agree I commit it.
Regarding your table. If I not misunderstood it, we agree. Here we are!
Your idea of slideOffset is a good one ..
Yes _upHandler should be triggered. You're right.

Locally I removed IDE files (i.e., .idea/ commited folder) and inserted them into .gitignore. I think they should not be in the repo. Can I commit this change?

Much appreciated. Thanks.

Since the track event is on the host and not on the swipeable content I think we should restrict it. E.g., when dragging/swiping on the orange part (see demo) the drawer should not respond. Locally I've a working solution. If you agree I commit it.

Worth taking a look.

Hi @motss I think here we are. What do you think?
We can posticipate you good idea about slideOffset.

@leodido

[x] Yes _upHandler should be triggered. You're right.

The track event must be not ignored when user drags (without releasing pointer) in the allowed direction after having dragged in the opposite and disallowed direction.

Steps to repro this issue (Assuming on a touch device):

Create a paper-swipe and set swipeLeft and noOppositeSwipe to true.
A paper-swipe that is allowed to be swiped to the left is created and it is not allowed to move towards the right at all.
Drag the paper-swipe to the right (which is the opposite direction) without lifting your finger up then drag it to the left and see if there is any movement. If no, this behavior is incorrect as the paper-swipe cannot be moved at all at this moment even though it's still in the tracking stage not yet trackend.
Then try dragging it to the left then to right and see if any difference. (The paper-swipe should be able to move left and right without the finger leaving the screen and this is the correct behavior).

P.S.: Probably, to fire a opposite-edge event make sense.

Why is this needed?

P.P.S.: Also investigating a debounce on (some or all event handlers) can make sense.

Is it because of performance issue?

Why is this needed?

Could be useful for the user to detect when _curPos is null/0 ?

Is it because of performance issue?

Yes.

The only "limitation" I found is:
User tries to swipe towards right, suppose event.detail.dx (distance from first track event pos) is 22, until the event.detail.dx is -22 (user is now dragging towards left), the handler does not start. When event.detail.dx is -23 is moves towards left.

Is this limitation found before or after this PR?

I cannot repro the issue ... It is not clear to me, please help/explain.
I already tried my best to explain though. Let's give it another try.

This element as the name implied is able to swipe to either side of the screen and it goes off the screen and never come back or disappear just like any swipeable cards or notifications that you can probably find on iOS and Android.
To add more functionalities for the user to customize the swipeable behavior, there are a few things introduced:

slideOffset - the minimum distance you swipe to make the swipeable element to move itself all the way to the edge of the screen and it can go off the screen or show a portion of itself from the edge defined by peekOffset.
swipeLeft and swipeRight to limit the direction that swipeable element can be swiped to. However, the swipeable element will kind of bounce back to its original position while swiping in the opposite direction like so:

A few things aim to fix in this PR:

Add a new property noOppositeSwipe to totally eliminate the bounce back effect while swiping in the opposite direction.
Limit the distance of the swipeable element can move while swiping in the opposite direction using slideOffset so that a) it can preserve the bounce back effect and b) to correct the behavior as the current one user can actually swipe the entire thing off the screen but it will come back later on which get the user into thinking that why can't it swipe in that direction.

Hey @motss I'm back.
So, in summary what this PR misses is:

[ ] Limit the distance the swipeable content can move towards the opposite direction to slideOffset.

It is correct?

slideOffset is adequate. By default, we need to drag at a distance beyond the value of slideOffset and release the draggable panel. It will slide all its way to the edge. So we should limit the distance in the opposite direction instead of allowing users to drag it beyond the slideOffset if noOppositeSwipe is true.

Furthermore: the bounce effect in the case of noOppositeSwipe is set should be restricted to the opposite edge or also to the primary edge?
Opposite edge? primary edge?

Ok. Please take a look to the results of the last commit.

\ping @motss

@leodido Might need some time to review.

ping @motss


fix: newsletter signup(added env var)

Close #141

Summary by CodeRabbit

Refactor

Updated the environment variable for reCAPTCHA to enhance security and compliance.

 Development Support, Nathan - May 2024


Write connection details to TTY on boot

When an HDMI monitor is connected to the Pi, it'll write the Tor hidden service address directly to the TTY without requiring the user to login.
This solves the problem of setting up a device on an untrusted network. We use the HDMI display as a secure channel to write out an ascii QR code that the user can scan to start the setup process securely via Tor.
Currently the setup is done over unencrypted HTTP on the local network. This is fine if the user trusts the network, however many people have smart devices on their local networks such as Chromecast/Sonos/Smart TV/etc and we can't verify how they work and that they aren't malicious.
So with that in mind it's probably not safe to assume the user's network is secure. Most users networks are probably insecure and they just don't know it.
It's impossible to bootstrap a secure connection over an insecure connection without any previous communication. If we show the hidden service address on the HTTP server and tell the user to continue there, there's no way they can verify someone hasn't MITMd the initial connection and injected a false address.
A self signed SSL cert doesn't really achieve anything here because if we generate it randomly the user doesn't know the expected fingerprint for the real cert, and if we hardcode it an attacker can just extract the private key from the source and use that to imitate the real server.
We need a secure communication channel to do some sort of initial information share so that we can establish a secure channel, and HDMI seems like the simplest solution.
Here's an example of what the ascii output looks like:

Concept and implementation ACK!
What a beautiful and creative solution to the pressing problem of bootstrapping initial connection. Pretty sure many OGs and hardcoiners are going to love it!
Unfortunately, I don't have a micro HDMI cable at my disposal currently, so I cannot test it. Meanwhile, @nolim1t: if you could test it out that'd be wonderful. Else we can directly proceed to merge it because we trust, and don't verify.

We should have it show the IP address too. umbrel.local doesn't work with windows or android (without installing special stuff). .local is only supported on MacOS or Linux

We should have it show the IP address too

+1. That's a very good point.

Raspbian/Pi OS already log the IP.
You can see it in the photo five [  OK  ] prints from the bottom.
We could pull it in to the ascii output to neaten it up but I didn't think the dashboard was available via IP address due to it not being in the origin whitelist?

Ah yes, you're right.
We can export the IP as an environment variable called DEVICE_IP on the boot, and set DEVICE_HOST=http://${DEVICE_IP} inside docker-compose.yml since http://umbrel.local is hardcoded in the CORS whitelist of both manager and middleware.

Yeah that's a good idea.

@meeDamian

Only other thought is that having logo, and QR horizontally will get them both terribly scrambled on a screen that's not wide enough. But I guess most TVs should be fine and guessing some smaller displays are not supported, and/or would require some extra changes.

Yeah, my thinking was that most HDMI displays are 16:9 and a good chunk of those will be exactly 1920x1080.
So its probably safe to assume most users will see it how we've tested it.
Also, remember this is writing directly to the TTY, it's not a proper terminal, AFAIK there is no scroll buffer. So if we put them underneath each other and something goes out of view there's no way for the user to scroll it back in. Since most diaplys will be 16:9, we actually have more horizontal real estate than vertical, so displaying things horizontally instead of vertically increases the amount of things we can show before they get cut off.

LGTM..

Only thing I can see making any sense would be removing some horizontal whitespace between, and around them, but again… probably really not worth bothering with.
Alternatively, spend an evening writing a custom QR-generator that puts umbrel logo in the middle 😝.

Alternatively, spend an evening writing a custom QR-generator that puts umbrel logo in the middle 😝.

@meeDamian stop giving him ideas 🤫


Doctool: Remove version attribute from XML header

We don't use that info for anything, and it generates unnecessary diffs every time we bump the minor version (and CI failures if we forget to sync some files from opt-in modules (mono, text_server_fb).

Cherry-picked for 3.7.


How to add cookies for context?

The code:
scrapy.Request(
            url=url,
            cookies=cookies,
            ...
)

It is not available.
But I use this method:await page.context.add_cookies(cookies=c) in parse, it is available, but this method is too bad.

Sending cookies using the Request.cookies argument does work, please check the examples/cookies.py script.
An alternative could be to pass storage_state.cookies (see this page for reference)  when creating the browser contexts (either at startup with the PLAYWRIGHT_CONTEXTS setting or during a crawl with the playwright_context_kwargs request  meta key).


Pipeline.afterPipe is applied only if function

This fixes a bug when afterPipe is an object and Pipeline tries to apply

2.12.4


UofT-DSI | sql - Homework 1

What changes are you trying to make? (e.g. Adding or removing code, refactoring existing code, adding reports)
add homework 1 submission .png
What did you learn from the changes you have made?
learned more about logical data model and DB Browser for SQLite
Was there another approach you were thinking about making? If so, what approach(es) were you thinking of?
N/A
Were there any challenges? If so, what issue(s) did you face? How did you overcome it?
N/A
How were these changes tested?
N/A
A reference to a related issue in your repository (if applicable)
Checklist

[x] I can confirm that my changes are working as intended

Assignment marked.


Examples

Summary
fixing the examples to work with new backend
Fixes #972
Fixes #969
Fixes #965
Details and comments

using_qiskit_terra_level_1 is still broken but the rest are working.


Multiple values support

Hi, Miriam!) I continue to explore your wonderful toolkit, and I had another question. Can accoutrement-scale support multiple values?
as here

Yes, but different.
Accoutrement allows you to create any number of ratios (we provide the basics), and use them in any combination to adjust any starting values. But instead of interlacing the base/ratio results in a single "scale" - we allow you to manipulate and combine each individually and explicitly.
// define any ratios that you want (in addition to the musical scale)...
$ratios: (
  'my-ratio': 1.375,
  'another-ratio': 1.42,
);

// use them alone or in comination to manipulate any base numbers
$sizes: (
  'rhythm': 16px ('my-ratio': 3, 'another-ratio': 1),
  'small-text': 24px ('my-ratio': -2),
);

(These are all arbitrary numbers. I'm just demonstrating how you can use it, not suggesting these calculations will turn out well)


Add static buildpack for serving the app

https://github.com/heroku/heroku-buildpack-static

:shipit:


Fix composer scripts

See https://github.com/slimphp/Slim/pull/2845

Coverage remained the same at 100.0% when pulling 065a5e58ce92b5484aaf64d2dbd6492c402cf81c on adriansuter:patch-composer-scripts into a614882c341ffbeaa6d4bbca0e9a69295e442d39 on slimphp:master.


Teleporting issues

Hi!
I'm a bit late reporting this issue as i thought the plugin was abandoned!
Basically, this is happening:
hub is in the world "Hub" and Spawn is in the world "Spawn"
Player: (In Spawn world)  /warp hub

Player gets teleported to the hub world, but rather to the last place they stood in that world instead of the specific warp.

This also happens with teleporting home into another world ect.
Here is the server log for reference:
latest.log
Thank you!

resolved, wron build used

Actually my bad, its still happening

We are using 2.7.0

This could be many things and none of them are Multiverse-Core. You should ask for support on the plugin that provides the /warp command. You could also look through your list of plugins and see if any of them could be related and trying to disable them until it works again.


11 Timeslots out of order at<PHONE_NUMBER>00

Same input
I run the a2t outside of my app and the error 11 issue still happens

Please post test reports to the issue that you are testing.  Do not open a new issue for every test report, only for new issues.
Duplicate of #15


Rounding errors of values when compared to other sources

There are quite a lot of rounding errors for calculations when compared to other sources like excel. For example while extending this library, I found that a particular calculation returns -29.45736 in Javascript and -29.56 in Excel. This can throw quite a few indicators off.

Can you provide some examples in an excel sheet?

this doesn't look like a rounding error, this is too far off!
anyway sometimes when working with numbers and JS it's worth using https://github.com/MikeMcl/bignumber.js/

@csupnig I'll try to get an Excel to compare the values out.
@csupnig @hems Do you think its worth to run an exercise, an attempt using big.js for calculations?


[monorepo] add travis + codecov ✅

This PR attempts to add travis to the build so it fails when prettier, linting, or testing fails.
@kristw @conglei @john-bodley @mistercrunch

things are all getting executed correctly, trying to debug why coverage %s are being reported as unknown.

It only took 16 commits but 🎉

gonna merge this into the wrong branch to get a cherry pickable hash for master. don't think I can change the branch I'm merging into now and the other is merged.


[Feature Request] validate() function

Hello, I'm wondering if we can make a function that just validates the JSON Schema itself, and not actually compile it into a JSONSchema, I currently just need to validate that the JSONSchema Received is valid, and doesn't need to actually use the schema itself.
I'm happy to open a Pull Request for this, since there seem to be existing functionality that already does this.

There is already a meta schema that does exactly this. I.e. you can use any of those to validate JSON Schemas. Internally, jsonschema contains such meta-validators here but they are not public


Adding images to the project isn't working

Describe the bug
When adding an image to the project and save the changes, this gives an error.
To Reproduce
Steps to reproduce the behavior:

Create a project
Go to view details
upload an image
save
you get the error (bug1)
click outside to quit it
The image can't be removed (bug2)

Screenshots

uploaded image (for testing)

Enabled tmp folder write access, this should be resolved now. Ready for testing.

Working fine


Problem with the log method

Hello
I have the following code with the following test
'use strict'
import winston from 'winston'

module.exports = class MyWinston extends winston.Transport {
  constructor(options = {}) {
    super(options)
  }

  log (level, message, meta, callback) {
    if (callback) {
      callback(level, message)
    }
  }
}

'use strict'
import winston from 'winston'
import MyWinston from './my-winston'

it('logs a string specified', done => {
  console.log('before..')

  winston.add(
    MyWinston, {}
  )

  winston.info('So say we all.', (level, message) => {
    console.log({level, message})
  })
  done()
})

and I'm getting the following inconsistent result
> NODE_ENV=test mocha "lib/logger/my-winston.spec.js"

before..
{ level: 'info', message: undefined }
    ✓ logs a string specified
{ level: null, message: 'info' }

the correct result should be
> NODE_ENV=test mocha "lib/logger/my-winston.spec.js"

before..
{ level: 'info', message: 'So say we all.' }
    ✓ logs a string specified

I believe the behavior should not be so as I am reporting. How can I fix this?
my environment
node: 8.9.3
npm: 5.5.1
winston: 2.4.2

This is generally not how callbacks are used, usually the first parameter of a callback is used for the error and the second one is for the result. I'm not going to explain all the details on callbacks, more about them here.
Also be sure to follow the documentation on adding custom transports and events and callbacks in winston.


Put quotes around the query

Was having issues with query that contained a space. Was unable to use the \  and other techniques. I may not be doing this corrcetly, please let me know.

Was having issues with query that contained a space. Was unable to use the \  and other techniques. I may not be doing this corrcetly, please let me know.

Hmm, I can take a look, could you please open an issue with the details?

It looks like I'm hitting an issue where the standard parser is producing a JSON body with a query filed that Solr 9.6 doesn't like.
This works:
q := fmt.Sprintf("id:*%s*\ncommon_names:%s", input, input)
query := solr.NewQuery(q).Limit(MaxSearchResults)

This does not:
queryString := fmt.Sprintf("id:%s\ncommon_names:%s", input, input)
parser := solr.NewStandardQueryParser().
  Query(queryString).
  Op("OR").
  BuildParser()
query := solr.NewQuery(parser).Limit(MaxSearchResults)


Sim theme does not update if you go to blocks after pxt.json

Repro:

Edit the theme in pxt.json

i.e. add "theme": "purple"

Go to blocks
See the theme does not update
Go back to pxt.json
See the theme has reverted

Still repros.


Patch: make cell around checkbox clickable

follow up
#2684
#2673
Makes it a bit easier to click checkboxes.

Sometimes the cursor changes to text selection:

I changed it to a pointer. This also makes it obvious you can click anywhere within the cell to select.


Tracking Issue for different-binary-name

Summary
Original issue: #1706
Implementation: #9627
Documentation: https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#different-binary-name
The different-binary-name feature allows setting binary output filenames that are separate from the crate name, and are not restricted to Rust identifiers.
Unresolved issues

[ ] Consider other ways of specifying the setting. There is some concern that filename may be misleading, particularly if we decide to use it for libraries where there is a prefix/suffix added.  Other options to consider:

file_stem, though this may also be confusing with library prefix/suffix.
Change name to not be restricted to identifiers, but if it is not an identifier, require a crate-name field.

[ ] Consider supporting other targets, like cdylibs or static libs. This can get tricky if a library is also built as an rlib.
[ ] Is using the filename the correct choice for CARGO_BIN_NAME?  There is some concern that this is introducing some inconsistencies that can cause confusion (for example, --bin uses the name and not the filename).  The actual executable name was chosen for CARGO_BIN_NAME since the use case for that was reflecting the executable name in things like clap help text.  How much of a problem are these inconsistencies going to be?

Future extensions
N/A
About tracking issues
Tracking issues are used to record the overall progress of implementation.
They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions.
A tracking issue is however not meant for large scale discussion, questions, or bug reports about a feature.
Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.

artifact_name?

Current implementation uses filename, but libstd uses file_name with underscore: https://doc.rust-lang.org/stable/std/?search=filename

I think that target_flie_stem or target_file_name would be the most appropriate name. However, I do think "name" makes more sense than "stem".
Could this be abused to hide malicious programs when installing a crate? Suppose a bin crate sets the target file name to chmod and a user cargo installs the crate. Depending on how the user has their PATH set up, the crate could take over all calls to chmod. Should we enforce some restrictions on what the file name can be?
Maybe:

Prevent cargo install from succeeding if there is already a matching command already available in the PATH
Enforce that the target file name be a substring of the crate name

Prevent cargo install from succeeding if there is already a matching command already available in the PATH

I'm not a fan of this because it's "impure"; two invocations of cargo install might not work the same across computers.

Enforce that the target file name be a substring of the crate name

I think this is still abusable because one could, for example, release a malicious cargo plugin named something like cargo-cool-plugin that renames itself to cargo, which is undesirable.

Instead of either of these, I suggest simply enforcing nothing but instead printing out the names of the commands added to PATH at the end of cargo install. This gives people freedom to choose whatever name they might want (maybe they do want to replace chmod) but also informs the user that the name might not be what they expect.

Also, I suggest bin-name for the name of the configuration option, this seems more consistent with existing things like CARGO_BIN_NAME as noted in the issue description.


docs: Fix contribution guidelines page

Issue: none
What I did

Contribution guidelines page was not loading because it doesn't have any headings
Screenshots:

Before:

Checklist

[X] changeset has been added
[X] Pull request description is descriptive
[X] I have made corresponding changes to the documentation
[-] New and existing unit tests pass locally with my changes
[-] I have added tests that prove my fix is effective or that my feature works

How to test

Confirm that the Contribution Guidelines page can be reached

✅ page opens with no errors
Tested on :
Chrome Version 128.0.6613.137 (Official Build) (64-bit)
Firefox 132.0.2 (64-bit)
Safari 18 macOS Sequoia
https://next--upbeat-sinoussi-f675aa.netlify.app/contribution-guidelines/


Deleting sop cast

website not reachable for last few days

Closing in favour of https://github.com/caskroom/homebrew-cask/pull/33739.


Running benchmark in llama_7b_moe AttributeError: 'NoneType' object has no attribute 'trt_tensor'

Running
mpirun --allow-run-as-root -n 2 python3 benchmark.py -m llama_7b_moe --max_batch_size 32 --batch_size "1;4;8;16;32" --max_input_len 4096 --max_output_len 4096 --input_output_len "4096,4096"
facing error

Traceback (most recent call last):
File "/code/TensorRT-LLM/benchmarks/python/benchmark.py", line 364, in
main(args)
File "/code/TensorRT-LLM/benchmarks/python/benchmark.py", line 276, in main
benchmarker = GPTBenchmark(args, batch_size_options, in_out_len_options,
File "/code/TensorRT-LLM/benchmarks/python/gpt_benchmark.py", line 72, in init
engine_buffer, build_time = build_gpt(args)
File "/code/TensorRT-LLM/benchmarks/python/build.py", line 556, in build_gpt
tensorrt_llm_model(*inputs)
File "/usr/local/lib/python3.10/dist-packages/tensorrt_llm/module.py", line 40, in call
return self.forward(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/tensorrt_llm/models/llama/model.py", line 398, in forward
hidden_states = super().forward(input_ids, position_ids, use_cache,
File "/usr/local/lib/python3.10/dist-packages/tensorrt_llm/models/llama/model.py", line 277, in forward
hidden_states = layer(
File "/usr/local/lib/python3.10/dist-packages/tensorrt_llm/module.py", line 40, in call
return self.forward(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/tensorrt_llm/models/llama/model.py", line 150, in forward
hidden_states = self.mlp(hidden_states,
File "/usr/local/lib/python3.10/dist-packages/tensorrt_llm/module.py", line 40, in call
return self.forward(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/tensorrt_llm/layers/moe.py", line 302, in forward
routing = self.router(routing_input)
File "/usr/local/lib/python3.10/dist-packages/tensorrt_llm/module.py", line 40, in call
return self.forward(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/tensorrt_llm/layers/linear.py", line 220, in forward
return self.multiply_reduce(x,
File "/usr/local/lib/python3.10/dist-packages/tensorrt_llm/layers/linear.py", line 206, in multiply_reduce
x = allreduce(x, self.tp_group, workspace, self.instance_id)
File "/usr/local/lib/python3.10/dist-packages/tensorrt_llm/functional.py", line 2876, in allreduce
plug_inputs.append(workspace.trt_tensor)
AttributeError: 'NoneType' object has no attribute 'trt_tensor'

By the way, could I assume 'llama_7b_moe' equals 'mixtral-8x7b' if I change moe_num_experts= in llama_7b_moe config?

@dominicshanshan , which version are you using? It's indeed an issue that we fixed in main (today) as well as 0.7.1. So, unless you are using the very latest version, this issue is "expected". Sorry for the inconvenience.
If you want to use Mixtral-8x7B, please, follow the steps in the Mixtral example.
I'm closing that issue but feel free to reopen it if the issue persists when updating to the very latest version of the code.

@dominicshanshan , which version are you using? It's indeed an issue that we fixed in main (today) as well as 0.7.1. So, unless you are using the very latest version, this issue is "expected". Sorry for the inconvenience.
If you want to use Mixtral-8x7B, please, follow the steps in the Mixtral example.
I'm closing that issue but feel free to reopen it if the issue persists when updating to the very latest version of the code.

Hi Julien, I use TRT-LLMv0.7.1, thanks for fixing!!

@dominicshanshan , which version are you using? It's indeed an issue that we fixed in main (today) as well as 0.7.1. So, unless you are using the very latest version, this issue is "expected". Sorry for the inconvenience.
If you want to use Mixtral-8x7B, please, follow the steps in the Mixtral example.
I'm closing that issue but feel free to reopen it if the issue persists when updating to the very latest version of the code.

@jdemouth-nvidia I reinstalled v0.7.1, the issue still there


Running in headless tests produces "Error: matchMedia not present"

Hi again
When I run my app with enquire.js in an automated headless test unit like https://github.com/assaf/zombie then following error is produced and is polluting my console:
Error: matchMedia not present, legacy browsers require a polyfill
    at Object.MediaQueryDispatch (<anonymous>:226:19)
    at <anonymous>:291:12
    at <anonymous>:15:37
    at Object.context.execCb (<anonymous>:1635:33)
    at Object.Module.check (<anonymous>:866:55)
    at Object.Module.enable (<anonymous>:1142:22)
    at Object.Module.init (<anonymous>:779:26)
    at callGetModule (<anonymous>:1169:63)
    at Object.context.completeLoad (<anonymous>:1529:21)
    at Object.context.onScriptLoad (<anonymous>:1656:29)

Not sure what a solution would be. Probably a new option would be good.

Hi, I know that this is closed but I can't get it to work.
I've tried stubbing matchMedia both inside the test file and in a separate file link in under jest in package.json.
The result is always that matchMedia is undefined in enquire.js
What am I missing?


force:data:tree:export failing in windows...

Summary
I am attempting to do a tree import under windows usef the sfdx commandline tools.  But I'm consistently getting an internal error when running the command under either cygwin or git-bash.
Steps To Reproduce:

Open a git bash terminal.
Run the command: sfdx force:data:tree:export --query "SELECT FIELDS(All) FROM Profile LIMIT 200" --outputdir sfdx-out

Expected result
Output such as:  Wrote 23 records to sfdx-out\Profile.json
Actual result
Error output:
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
System Information
docbi@DESKTOP-C34PPA6 MINGW64 ~/vscode-projects/spark-project (sprint0)
$ sfdx version --verbose --json
{
"cliVersion": "sfdx-cli/7.143.0",
"architecture": "win32-x64",
"nodeVersion": "node-v16.14.0",
"pluginVersions": [
"@oclif/plugin-autocomplete 0.3.0 (core)",
"@oclif/plugin-commands 1.3.0 (core)",
"@oclif/plugin-help 3.3.1 (core)",
"@oclif/plugin-not-found 1.2.6 (core)",
"@oclif/plugin-plugins 1.10.11 (core)",
"@oclif/plugin-update 1.5.0 (core)",
"@oclif/plugin-warn-if-update-available 1.7.3 (core)",
"@oclif/plugin-which 1.0.4 (core)",
"@salesforce/sfdx-plugin-lwc-test 0.1.7 (core)",
"alias 1.2.1 (core)",
"apex 0.11.0 (core)",
"auth 1.8.1 (core)",
"community 1.1.4 (core)",
"config 1.3.23 (core)",
"custom-metadata 1.0.12 (core)",
"data 0.6.10 (core)",
"generator 1.2.2 (core)",
"info 1.3.1 (core)",
"limits 1.3.0 (core)",
"org 1.11.2 (core)",
"salesforce-alm 54.0.2 (core)",
"schema 1.1.0 (core)",
"sfdx-cli 7.143.0 (core)",
"source 1.8.19 (core)",
"telemetry 1.4.0 (core)",
"templates 54.2.0 (core)",
"trust 1.1.0 (core)",
"user 1.7.1 (core)"
],
"osVersion": "Windows_NT 10.0.19044"
}
Additional information
The commandline works normally using cmd.   I am guessing the bug is the export is forking a program using the same shell as the the shell that invoked it, but assuming the cmd syntax for the path being executed.

which sfdx commands are returning error codes even when successful? That doesn't seem right

also, cygwin and git-bash are unsupported shells where behavior isn't guaranteed try in command-prompt or powershell

For example the command:
sfdx force:source:convert -r "$apppath"/ -d "$mdapipath"/

Successfully converts the source, but will cause a shell script to about if
I use the -e flag to abort on errors.
Interesting enough,
sfdx force:mdapi:deploy
normally works.  But if I past -u followed by a random string, it will
produce the "C:\Program" error as well.
Changes are there is a system command where the command a line of shell
script to be executed is passed, instead of a an array of arguments.  Since
the name of the program is not quoted, parsing stops at "C:\Program" in
"C:\Program Files..." and it tries to execute that as the command.
Interesting, I would normally expect to be able to resolve this type of
problem by using the DOS paths.   So I substituted "C:\Program Files"  in
environmental variables like my java path with "C:\PROGRA~1".   But it did
not resolve the error.
Under the theory it is a system call, I tried the following assigning a
different value to SHELL.
But the same error occurred.  Since the system() call respects the SHELL
environmental variable I can exclude that from the list of possibilities.
I did find a reasonable workaround:
alias sfdx="cmd /C sfdx"
So I modified my scripts to include the following lines near the top:
if [ -z "$PROGRAMFILES" -o ! -e "$(which cmd)" ]
then
set -e
else
alias sfdx="cmd /C sfdx"
fi
and this seems to work.   With the exception, the script won't
automatically abort after a failed command.
Chances are there are probably still issues if I use unix syntax for
absolute paths, but I have not hit that issue.
On Tue, Mar 29, 2022 at 10:50 AM Willie Ruemmele @.***>
wrote:

which sfdx commands are returning error codes even when successful? That
doesn't seem right
—
Reply to this email directly, view it on GitHub
https://github.com/forcedotcom/cli/issues/1456#issuecomment-1081967726,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAYFYWHGOENIZTU5LNPGCB3VCMKBVANCNFSM5R6H36BQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Bill C Riemers, PhD, CSM, CSD, A-CSD, SALESFORCE CPD I, SALESFORCE CDL&DA
Principal Software Engineer
Red Hat Canada Ltd https://www.redhat.com/
Enterprise Sales + Services (ESSA)
https://red.ht/sighttps://patents.justia.com/inventor/bill-c-riemers

It looks like I really need something like:
sys=$(uname -s)
if [[ "$sys" == "CYGWIN"* ]]
then
alias sfdx="cmd /C sfdx"
elif [[ "$sys" == "MINGW"* ]]
then
alias sfdx="cmd //C sfdx"
else
set -e
fi
As MINGW (git bash) will automatically convert "/C" to "C:".

I'm still confused why these would be unsupported shells.  Bash is supported under MacOSX and Linux, so why not Windows?  Without bash support in windows, it is impossible to write scripts that will work consistently in all three environments.

Could the workaround at least be documented with known issues?
BTW.  Under Linux there is the persistent bug where tty output continues after a command line has finished.   The result is you run a deploy, and then the testing results are overwritten by the terminal prompt.   There are a number of such bugs under every platform I have used the CLI tools on.  It has been my experience that fixing these "unsupported" shells, leads to finding and fixing the cause the issues under the supported platforms.  As usually they are result of now following best practices for cross platform code.  So I would suggest even if not prioritizing such issues, at least keep track of them, as they are the vital clues needed.

My two cents on this since several of our team members use Windows:

Using bash on Windows is fraught with peril .. sure, you can complain about the fact that most things that fail are bugs, but they are the types of things that get introduced time after time in various tools because using bash on Windows is so uncommon that no one tests that environment. It's a losing battle and not really worth trying to fight, IMO.
Can you use front slashes for most of your path arguments? This is how we've mitigated most problems with *nix or other tooling inadvertently treating the backslash as an escape character
WSL is an option but I believe the CLI team also considers that an unsupported environment too -- it was supported for a while but I think they abandoned it? WSL isn't a magic bullet either since you'll often want your GUI tooling to be native Windows which means you sometimes get into path/permissions problems trying to share a file system between the two.

It looks like I really need something like:
if [[ "$sys" == "CYGWIN"* ]]
then
alias sfdx="cmd /C sfdx"
elif [[ "$sys" == "MINGW"* ]]
then
alias sfdx="cmd //C sfdx"
else
set -e
fi
As MINGW (git bash) will automatically convert "/C" to "C:".
On Wed, Mar 30, 2022 at 8:45 AM Bill Riemers @.***> wrote:

For example the command:
sfdx force:source:convert -r "$apppath"/ -d "$mdapipath"/

Successfully converts the source, but will cause a shell script to about
if I use the -e flag to abort on errors.
Interesting enough,
sfdx force:mdapi:deploy
normally works.  But if I past -u followed by a random string, it will
produce the "C:\Program" error as well.
Changes are there is a system command where the command a line of shell
script to be executed is passed, instead of a an array of arguments.  Since
the name of the program is not quoted, parsing stops at "C:\Program" in
"C:\Program Files..." and it tries to execute that as the command.
Interesting, I would normally expect to be able to resolve this type of
problem by using the DOS paths.   So I substituted "C:\Program Files"  in
environmental variables like my java path with "C:\PROGRA~1".   But it did
not resolve the error.
Under the theory it is a system call, I tried the following assigning a
different value to SHELL.
But the same error occurred.  Since the system() call respects the SHELL
environmental variable I can exclude that from the list of possibilities.
I did find a reasonable workaround:
alias sfdx="cmd /C sfdx"
So I modified my scripts to include the following lines near the top:
if [ -z "$PROGRAMFILES" -o ! -e "$(which cmd)" ]
then
set -e
else
alias sfdx="cmd /C sfdx"
fi
and this seems to work.   With the exception, the script won't
automatically abort after a failed command.
Chances are there are probably still issues if I use unix syntax for
absolute paths, but I have not hit that issue.
On Tue, Mar 29, 2022 at 10:50 AM Willie Ruemmele @.***>
wrote:

which sfdx commands are returning error codes even when successful? That
doesn't seem right
—
Reply to this email directly, view it on GitHub
https://github.com/forcedotcom/cli/issues/1456#issuecomment-1081967726,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAYFYWHGOENIZTU5LNPGCB3VCMKBVANCNFSM5R6H36BQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Bill C Riemers, PhD, CSM, CSD, A-CSD, SALESFORCE CPD I, SALESFORCE CDL&DA
Principal Software Engineer
Red Hat Canada Ltd https://www.redhat.com/
Enterprise Sales + Services (ESSA)
https://red.ht/sighttps://patents.justia.com/inventor/bill-c-riemers

--
Bill C Riemers, PhD, CSM, CSD, A-CSD, SALESFORCE CPD I, SALESFORCE CDL&DA
Principal Software Engineer
Red Hat Canada Ltd https://www.redhat.com/
Enterprise Sales + Services (ESSA)
https://red.ht/sighttps://patents.justia.com/inventor/bill-c-riemers


chore: improve commitlint experience when not using commitizen

PR Type

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no API changes)
[ ] Build-related changes
[X] CI-related changes
[ ] Documentation content changes
[ ] Application / infrastructure changes
[x] Other: Commit Linter
What Is the Current Behavior?

It allows committing back changes without type.
❯ echo "bar" | ./node_modules/.bin/commitlint

Issue Number: N/A
What Is the New Behavior?
It forces the user to specify the "type" of the commit message.
It will fail if not present or not according to commitizen config.
❯ echo "bar" | ./node_modules/.bin/commitlint
⧗   input: bar
✖   subject may not be empty [subject-empty]
✖   type may not be empty [type-empty]

✖   found 2 problems, 0 warnings
ⓘ   Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint

❯ echo "foo: bar" | ./node_modules/.bin/commitlint
⧗   input: foo: bar
✖   type must be one of [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test] [type-enum]

✖   found 1 problems, 0 warnings
ⓘ   Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint

Does this PR Introduce a Breaking Change?

[ ] Yes
[x] No
Other Information
Useful when using commitlint in CI.

@kepek Thank you for the contribution.
It seems to me you are working with an older node version. The currently required is 16.16.0. If you use the provided devcontainer, you are always on the correct one. I took the liberty of updating the package-lock.json with the new format.

@dhhyi you're correct. I haven't used the dev container for this change. I will keep that in mind for the future.

@kepek Can you please rebase with intershop:develop and resolve the conflicts?

@jometzner done


Adding GitHub Enterprise on MS Teams getting "Something went wrong"

Hi, I am trying to install https://appsource.microsoft.com/en-gb/product/office/WA104381552?src=wnblogmar2018 and I get a "something went wrong" in MS Teams....
Any ideas what could be causing this?
I have full permissions in MS Teams policies.
Thanks, ii

@ii-batman Could you please try this in browser and see if you get any console errors?

@ii-batman Could you please try this in browser and see if you get any console errors?

Hi @Gousia-MSFT  - what should I try?

@ii-batman Please login to Teams on browser(https://teams.microsoft.com) and try to install the app. Open browser console(by pressing F12 and see if you see any console errors there?

Errors:
DevTools failed to parse SourceMap: https://teams.microsoft.com/service-worker.js.map
DevTools failed to parse SourceMap: chrome-extension://hdokiejnpimakedhajhdlcegeplioahd/sourcemaps/onloadwff.js.map
jsll-4.js:1 Cross-Origin Read Blocking (CORB) blocked cross-origin response https://web.vortex.data.microsoft.com/collect/v1?$mscomCookies=false&ext-javascript-msfpc='GUID%3D54703b720e5b48c3980a2eb7580aa59f%26HASH%3D5470%26LV%3D201902%26V%3D4%26LU%3D1550590097368' with MIME type application/json. See https://www.chromestatus.com/feature/5629709824032768 for more details.
st @ jsll-4.js:1
awa.writeEvent @ jsll-4.js:1
f @ jsll-4.js:1
o @ jsll-4.js:1
(anonymous) @ t.js?ver='2.1'&name='Ms.Webi.PageView'&time='2020-02-21T15%3A37%3A25.751Z'&os='Windows'&appId='JS%3Ateams.microsoft.com'&-ver='1.0'&-impressionGuid='1d5d8d6b-447d-4a9a-aaa7-e3672d076d90'&-pageName='launcher.html'&-uri='https%3A%2F%2Fteams.microsoft.com%2Fdl%2Flauncher%2Flauncher.html%3Furl%3D%2f_%23%2fl%2fapp%2fca319335-400e-43c1-bca4-b6c745ce3093%3fsource%3dapp-source%26type%3Dapp%26deeplinkId%3D783218da-6b89-4916-aa36-fa1952686807%26directDl%3Dtrue%26msLaunch%3Dtrue%26enableMobilePage%3Dtrue%26suppressPrompt%3Dtrue'&-referrerUri='https%3A%2F%2Flogin.microsoftonline.com%2F'&-market='en-US'&-resHeight=720&-resWidth=1280&-pageTags='{"metaTags"%3A{}}'&-behavior=0&*baseType='Ms.Content.PageView'&*cookieEnabled=true&*cookies='_mkto_trk%3Did%3A157-GQE-382%26token%3A_mch-microsoft.com-1563893223951-14651%3B'&*isJs=true&*title='Join conversation'&*isLoggedIn=false&*flashInstalled=false&ext-javascript-ver='1.1'&ext-javascript-libVer='4.2.14'&ext-javascript-domain='teams.microsoft.com'&ext-javascript-msfpc='GUID%3D54703b720e5b48c3980a2eb7580aa59f%26HASH%3D5470%26LV%3D201902%26V%3D4%26LU%3D1550590097368'&ext-javascript-userConsent=true&ext-user-localId='t%3A14140A1968486040336607186C486309'&$mscomCookies=false:1 @Gousia-MSFT

@ii-batman Could you please share a more detailed steps for repro maybe a video recording of the issue?

Please re-open with requested information.


Add wsCleanup example for setting failBuild option

This took some digging through code and trial and error to figure out how to use the failBuild option through DSL, so contributing an example to help others.

Thank you for this pull request! Please check this document for how the Jenkins project handles pull requests.

Thanks! Your commit failed the build because there is a test which compiles the examples to check for errors. Your example did not compile because the projectRoot variable is undefined. I removed the variable because I think it's not relevant for the example. I also removed the clean* options because those are true by default. See https://github.com/jenkinsci/job-dsl-plugin/commit/56e394f23864d074eab9762195e220aa0f654caf for the result.


App & a11y settings

As a user I want to be able to:

[ ] change application specific settings separate from user settings.
[ ] manage notifications that I get.
[ ] adjust font & color theme
[ ] set preferences for downloads over wifi / mobile-data or manual

Hi,
I wanted to contribute to this project, and this issue or any other. Is this open for contributions or is it currently a closed team building in public?


After initial load, xml file not being re-read for male bodies.

I am working on collisions without added collision bodies. Pointing femalebody.nif to an xml that declares a triangle shape for Baseshape gives good collision for a wig or cloak without any proxy collision bodies. The nif shapes are declared as internal, rather than private.
Now the issue is that the same procedure for malebody.nif does not work as well. Loading into the game, collision is good, but entering racemenu or using SMP reset causes a complete lack of collision from then on.
It would appear that something in the game engine is preventing the xml file being used in the case of males. The SMP List command shows the male player skeleton as 'inactive, not in scene' at the beginning of the list and as active at the end of the list.
Just for males; females work normally.

I have found that the problem is not confined to bodies. I would seem that it is because the male body consists of one shape and the female body has extra shapes.
A physics item containing only one shape will not have collision after an 'smp reset'. It will work again when re-equipped, which I could not do with bodies. 'Smp detail' shows that the collision message is not re-found after 'smp reset'.

@sm644 , would you have a ready to use mod to reproduce the pb?

Thank you. I sort of confirmed the problem with a Fuse00 Raven mask. I removed the proxy collision mesh, so it was then one single TriShape. Entering showracemenu then stopped collision. smp reset also stops collision until the item is re-equipped.
By the way, I am using the actual femalebody nif for collision. My (smartco) wigs work fine without proxy collision because they are each more than one constituent shape.

Oh, you're smartco :) ? Hey smartco :) !
Ok, so,

this mod: https://www.nexusmods.com/skyrimspecialedition/mods/87655,
open the male mask nif with nifskope,
remove the _Fuse00_Raven_Chest_Col BSTriShape,
in the game, 'smp reset',
Problem proofs:
skeleton is seen as inactive, not in scene
no collision auto-created for the body concerning this mask.

Have I well understood how to reproduce the problem?

I think the player appearing 2 times may be related to the 1st person and 3rd person views player bodies.
I'm working on this in parallel.
Found how to modify the nifs in nifskope, added the xml.
Still have to define what I put inside.

Thank you. A little pause right now.
I'll continue later, possibly this evening.

Reproduced

Hey sm644, could you please test this dll? hdtSMP64.zip
If it doesn't solve your problem, please report the hdtSMP64.log.
It will be very verbose, so in this case please just reproduce
and leave before providing it.

Hi Day,
That has fixed it.
Immediate CTD the first attempt; either coincidence or cache clearing?
Second go, it worked and cured the problem. A lot of delay, because of the log verbosity, I suppose.
You know I am the curious type though. Are you going to tell me what you found?  :-)
smartco.

Yes :)
I need to document well what happens...
Will put it in next message, might be long.
CTD worries me though. You tried on exactly the same save?

Yes, just the continue game save. I will keep this test dll for awhile and see if it CTDs again.

When a smp reset happens, we can't go through the ArmorAttachEvent processing: no event is sent by the skyrim executable.
So for each known skeleton, and each of its known armors meshes, we apply the related xml file.
Each armor has a record of each xml file applies, the names of the meshes of the armor in the xml file / nif, and for each mesh name the name of the NiAVObject attached through the ArmorAttachEvent hook processing.
We can then apply the related xml file to this NiAVObject that we find back through its name.
But!
The skyrim executable changes later the name of the NiAVObject passed as attachedNode through the ArmorAttachEvent hook.
So, when trying to find the recorded name in the existing objects, we don't find it anymore.
The proposed solution is to save the original name, detect on a following event when that name has changed, and save the new name too.
4 days to diagnose and solve this...!

It seemed to work ok with nifs that had more than one constituent shape. I'm not sure that your explanation covers that aspect.
On a less general note, I can't get that dll to run again on my system. It crashed first time, second attempt then ran slowly to allow proof of the Raven mask enduring an smp reset. Now it CTDs, even when older saves are loaded. A reboot hasn't helped, but going back to my old dll has returned me to normal.

Finished refactoring and beautifying my code.
Will re-test and release another test version in the next days.

Merci bien.

Hey sm644, could you please test this version hdtSMP64.zip ?
If you don't report any problem, it's final.
Thank you for the remark on ctds, I had to test in solitude rather than only on one skeleton to have it happen to me.


Support 'textEdit.newText' in 'resolveSupport' of 'CompletionClientCapabilities'

Proposal
Today, VS Code declares the resolveSupport of CompletionClientCapabilities as:
"resolveSupport": {
    "properties": [
        "documentation",
        "detail",
        "additionalTextEdits"
    ]
}

The textEdit is not included since the range of the textEdit is a key information to let the client do filtering correctly.
What if we limit the scope to textEdit.newText only? By doing this, the range is guaranteed to be available in the response of textDocument/completion. Only the content may have an update in completionItem/resolve.
Example
For example, when completing the constructor new String(byte[] bytes) in Java. If we support lazy-resolve the newText of TextEdit, we can first return
"textEdit": {
    "newText": "String()",
    "range": xxx
}

in textDocument/completion. And then give a more accurate content in completionItem/resolve:
"textEdit": {
    "newText": "String(${1:bytes})",
    "range": xxx
}

Even if the item is committed before the resolve result comes, the completion result is still acceptable.

I experimented and found that VS Code already supports update the newText of textEdit during resolve. If I change the content of it during completionItem/resolve, VS Code can apply the change correctly.

More background
The completion performance is always a key metric for a Language Server. Specific to Java Language Server, we found that the textEdit always takes a lot of time to calculate, mostly caused by the calculation of newText part (Because it requires to append parameter names. When it comes to constructor completion, the situation becomes like a disaster because the server needs to fetch source code from different types to get the parameter names of different constructors). This is how this idea came about.

@jdneo actually this is not intended behavior in VS Code (I discussed this with @jrieken and he confirmed it). As stated in the vscode.d.ts changing a property like insertText is not something that is supported.
Due to that the LSP client is not able to support this either.

Is there any reason to ban this capability? I know the behavior is not intended, but current VS Code supports it quite well.

Hi @jrieken I'm writing to express my concern about https://github.com/microsoft/vscode/pull/183224 to disable textedit resolve in resolveCompletionItem. This will break the code completion feature for Java users, as Java extension relies on textedit lazy resolve for performance reasons (it can be 2X faster in some cases with delay resolving text edit). Code completion is a very important and widely used feature for VS Code Java users, and losing it will greatly affect the user experience and productivity. I understand that you have your reasons to disable textedit lazy resolve, but I hope you can reconsider this decision on #183224  or provide an alternative solution for us. Thank you for your understanding and collaboration.

@jdneo @testforstephen Sorry, but I cannot follow. Resolving the primary text edit async cannot work reliably. Accepting a completion item in the UI (via the keyboard or mouse) is a synchronous operation and we synchronously apply the (primary) text edit. This never did (and technically cannot) wait for the completion item to be resolved - in fact it can be that we only call resolve after making the edit. This means fast typing/accepting of completions will not get the resolved item and its acceptance behaviour is more or less random (depends on the workload of the EH process and user interaction speed)
Note that I am only talking about that, e.g CompletionItem.insertText (in LSP lingo I believe it is textEdit) and not about additionalTextEdits. Please clarify and help me understand how this works today, my only guess is that today you get "saved" my this condition, e.g unresolved item insert their label, not the actual edit

Please clarify and help me understand how this works today.

The Example section in the issue description shows how the response looks like. We return the textEdit in textDocument/completion, and update the newText of textEdit in completionItem/resolve.

This means fast typing/accepting of completions will not get the resolved item and its acceptance behaviour is more or less random

I agree that with a very fast typing speed, there will be a chance that the edit has not been resolved and get applied. To be honest, my own experience on that is that, the possibility is very low. At least for myself, I haven't experience that in my memory.
I think this is kind of tradeoff between the perf and accuracy. What about introducing a setting to control the behavior (allow/disallow resolving edit) and leave the choice to users?
I really hope VS Code team can reconsider it, if this capability is disabled, it will have a very huge impact on completion experience for Java language.

Share more background:
We will always return an insertText in the initial completion response. It's the textEdit property we want to lazy resolve in completion/resolve request. For example, for a “foreach” completion, we return a basic template for (${1:iterable_type} ${2:iterable_element} : ${3:iterable}) {\n\t$TM_SELECTED_TEXT${0}\n} as insertText for the initial completion response, but in the completion/resolve stage, we fill a textEdit with inferred iterable arguments, such as for (${1:String} ${2:string} : ${3:args}) {\n\t$TM_SELECTED_TEXT${0}\n}. The accurate textEdit calculation is more expensive and requires more context resolution. If we put it in the initial completion response, it would slow down the completion responsiveness significantly.
We understand that VS Code cannot guarantee that the completion/resolve request is executed before applying the completion item, but we think that’s an acceptable tradeoff between the perf and accuracy. Java extension has used lazy resolving textEdit  in completion feature for years and we haven’t received negative feedback from users. Before we find a better alternative solution for completion performance (e.g. support incremental completion request), can we maintain the behavior as before for now?
@jrieken WDYT?

Understood, I have pushed https://github.com/microsoft/vscode/pull/183426 to give us some breathing room here. However, this will need to change.

To be honest, my own experience on that is, the possibility is very low. At least for myself, I haven't experienced that in my memory.

Sounds like "Works for me™". I am your experience is going to be different when using a slower computer, having more extensions doing stuff in the EH process, working on codespaces with high latency etc pp. Doing things like this is an invitation for "randomness" and nothing great.

Before we find a better alternative solution for completion performance (e.g. support incremental completion request), can we maintain the behavior as before for now?

In a way the API already has these alternatives, e.g the CompletionItem#command property could be used for this but I would advise against it tbh. The better alternative is additionalTextEdits which already exists but is spec to not overlap with the primary edit. I am open to relaxing that restriction - it only exists to make the implementation simpler and I am open to suggestions/PRs (code pointer)

@jrieken thanks for revisiting the issue. additionalTextEdits looks like an interesting alternative we can look further. However, I still have some questions about the latest behavior. I have left a comment https://github.com/microsoft/vscode/pull/183426#discussion_r1206185242 in the revert PR, where I want to confirm if the textEdit property added by completion/resolve request will be ignored. thanks.

@jrieken Another restrictionof additionalTextEdit in current spec is that the insertTextFormat doesn't apply to it. Does VS Code open to relax that as well?

Does VS Code open to relax that as well?

Likely no, esp. not when the main edit is already a snippet and not when additional edits come late. Snippet insertion always requires user interaction, e.g the cursor jumps to placeholder etc pp. This technically cannot be done for two snippets at the same time and UX-wise this cannot be done at a "random" point in time

With https://github.com/microsoft/vscode/pull/184994 we are collecting telemetry about how often items are inserted before resolve is done. We will also log how often asynchronous additional edits can successfully be applied. Once we have the data we can make informed decisions.

Some data over the last two weeks. This is always about inserting a completion item before has been resolved. This means:

async computed command is ignored
async changed insertText doesn't happen
additional text edits are inserted on a best-effort basis

The columns mean the following

Sessions (%) - A session corresponds to a VSCode window, so this is a good measure of how many users are affected by unresolved item
AvgResolve (ms) - The average duration of resolve calls. This obviously highly depends on what resolve does, e.g some extensions load documentation via the internet which is always slow (but also not affecting the insert behaviour)
Completions (%) - How many completions (overall) are inserted unresolved

The gist remains that unresolved item insertion (with above consequences) happens rarely but to very many users.

Extension
Sessions (%)
AvgResolve (ms)
Completions (%)

vscode.typescript-language-features
22.10%
48.08
3.96%

rust-lang.rust-analyzer
15.97%
9.35
1.59%

redhat.java
26.21%
45.05
4.56%

ms-vscode.powershell
24.69%
50.92
6.61%

ms-vscode.cpptools
16.21%
44.51
3.65%

ms-python.python
17.25%
28.76
3.17%

ms-dotnettools.csharp
23.72%
17.28
2.86%

Dart-Code.dart-code
27.90%
28.69
4.05%

fyi - @jdneo, @333fred, @DanTup

Am I right in thinking that VS Code doesn't know whether resolve is adding anything here

Let's keep this off-topic but yes we only know that the provider wants to resolve (otherwise it wouldn't have that capability) but we do not know what it actually does, only the provider knows

Hi @jrieken, some question about the data.

Is the column of Completions (%) counts over all of the completions or it's the percent happens in the left mentioned sessions?

By saying unresolved, does that mean the resolve request is sent out but the response is not received? Or it doesn't care whether the resolve request is sent, as long as the response is not received, it is unresolved?

It's over all completions, so 4.56% of all java completions are inserted before resolving is done (response not yet received)

@jrieken It seems to me that additionalEdits and the command don't wait for the main edit to be applied... Is this correct?
My use case is i need to add a suffix at the end of main edit. It is expensive to compute suffix for many completion items therefore I'm trying to limit it only to resolved completion. Once the suffix is applied I move the cursor to the position right after the suffix with a command. This works fine in Eclipse (LSP4E) but in VSCode suffix is placed before the main edit :-\ And I also see the cursor not moved to the end... so a bit of a mess... and seems due to things done in random order.

ms-dotnettools.csharp | 23.72% | 17.28 | 2.86%

@jrieken is there a dashboard that we can use as a starting point to expand on the completion telemetry?


Unable to add a new organization to the network in feature/fabric220

Describe the bug
Adding a new organization fails in feature/fabric220 branch
To Reproduce
Steps to reproduce the behavior:

Create a fabric network with 2.2.0 version from the fabric220 branch
Modify the network.yaml to add a new organization.
Run the add-new-organization.yaml script.

Expected behavior
The new organization should be added to the network.
Screenshots
The script fails with the below error
"\u001b[36m2020-11-26 10:10:29.463 UTC [msp] Validate -> DEBU 01c\u001b[0m MSP org1MSP validating identity", "\u001b[36m2020-11-26 10:10:29.464 UTC [msp] GetDefaultSigningIdentity -> DEBU 01d\u001b[0m Obtaining default signing identity", "\u001b[34m2020-11-26 10:10:29.464 UTC [channelCmd] InitCmdFactory -> INFO 01e\u001b[0m Endorser and orderer connections initialized", "\u001b[36m2020-11-26 10:10:29.465 UTC [msp.identity] Sign -> DEBU 01f\u001b[0m Sign: plaintext: 0AA6080A076F7267314D5350129A082D...72697465727312002A0641646D696E73 ", "\u001b[36m2020-11-26 10:10:29.465 UTC [msp.identity] Sign -> DEBU 020\u001b[0m Sign: digest: CDEEE8E2587E2AC5B72B86FF9D904610A55A712325050E9AF69C3E4CDAF474D3 ", "\u001b[36m2020-11-26 10:10:29.466 UTC [msp.identity] Sign -> DEBU 021\u001b[0m Sign: plaintext: 0ADE080A1608021A060895FEFDFD0522...CEDA82A20F2F52B0F3E36B3D887946E4 ", "\u001b[36m2020-11-26 10:10:29.466 UTC [msp.identity] Sign -> DEBU 022\u001b[0m Sign: digest: 1F313A659A3D64C0E28B86186AD771790DD702AFBA9B85DE749BDC73A9C45050 ", "\u001b[36m2020-11-26 10:10:29.467 UTC [grpc] WithKeepaliveParams -> DEBU 023\u001b[0m Adjusting keepalive ping interval to minimum period of 10s", "\u001b[36m2020-11-26 10:10:29.467 UTC [grpc] Infof -> DEBU 024\u001b[0m parsed scheme: \"\"", "\u001b[36m2020-11-26 10:10:29.467 UTC [grpc] Infof -> DEBU 025\u001b[0m scheme \"\" not registered, fallback to default scheme", "\u001b[36m2020-11-26 10:10:29.467 UTC [grpc] Infof -> DEBU 026\u001b[0m ccResolverWrapper: sending update to cc: {[{orderer1.ordorg-net:7050  <nil> 0 <nil>}] <nil> <nil>}", "\u001b[36m2020-11-26 10:10:29.467 UTC [grpc] Infof -> DEBU 027\u001b[0m ClientConn switching balancer to \"pick_first\"", "\u001b[36m2020-11-26 10:10:29.467 UTC [grpc] Infof -> DEBU 028\u001b[0m Channel switches to new LB policy \"pick_first\"", "\u001b[36m2020-11-26 10:10:29.467 UTC [grpc] Infof -> DEBU 029\u001b[0m Subchannel Connectivity change to CONNECTING", "\u001b[36m2020-11-26 10:10:29.467 UTC [grpc] Infof -> DEBU 02a\u001b[0m Subchannel picks a new address \"orderer1.ordorg-net:7050\" to connect", "\u001b[36m2020-11-26 10:10:29.468 UTC [grpc] UpdateSubConnState -> DEBU 02b\u001b[0m pickfirstBalancer: HandleSubConnStateChange: 0xc00041bb10, {CONNECTING <nil>}", "\u001b[36m2020-11-26 10:10:29.468 UTC [grpc] Infof -> DEBU 02c\u001b[0m Channel Connectivity change to CONNECTING", "\u001b[36m2020-11-26 10:10:29.475 UTC [grpc] Infof -> DEBU 02d\u001b[0m Subchannel Connectivity change to READY", "\u001b[36m2020-11-26 10:10:29.475 UTC [grpc] UpdateSubConnState -> DEBU 02e\u001b[0m pickfirstBalancer: HandleSubConnStateChange: 0xc00041bb10, {READY <nil>}", "\u001b[36m2020-11-26 10:10:29.475 UTC [grpc] Infof -> DEBU 02f\u001b[0m Channel Connectivity change to READY", "Error: got unexpected status: BAD_REQUEST -- error applying config update to existing channel 'allchannel': error authorizing update: error validating DeltaSet: invalid mod_policy for element [Group]  /Channel/Application/org3MSP: mod_policy not set", "command terminated with exit code 1"], "stdout": "", "stdout_lines": []}

Environment (please complete the following information):

OS: docker run in MacOS
Version [e.g. 22]

Additional context
Comparing the script with this document - https://developer.ibm.com/technologies/blockchain/tutorials/cl-add-an-organization-to-your-hyperledger-fabric-blockchain/. If you look at the update_config.json, it has all the orgs added to the Application.groups, where as the add-new-organization.yaml script has only the org that is being added as part of the Application.group.

# This is a sample configuration file for SupplyChain App which has 5 nodes.
network:
  # Network level configuration specifies the attributes required for each organization
  # to join an existing network.
  type: fabric
  version: 2.2.0                 # currently tested 1.4.0 and 1.4.4

  frontend: enabled #Flag for frontend to enabled for nodes/peers

  #Environment section for Kubernetes setup
  env:
    type: "dev"              # tag for the environment. Important to run multiple flux on single cluster
    proxy: haproxy                  # values can be 'haproxy' or 'ambassador'
    ambassadorPorts: 15010,15020    # Any additional Ambassador ports can be given here, must be comma-separated without spaces, this is valid only if proxy='ambassador'
    retry_count: 20                 # Retry count for the checks
    external_dns: disabled           # Should be enabled if using external-dns for automatic route configuration

  # Docker registry details where images are stored. This will be used to create k8s secrets
  # Please ensure all required images are built and stored in this registry.
  # Do not check-in docker_password.
  docker:
    url: "index.docker.io/hyperledgerlabs"
    username: "docker_username"
    password: "docker_password"

  # Remote connection information for orderer (will be blank or removed for orderer hosting organization)
  # For RAFT consensus, have odd number (2n+1) of orderers for consensus agreement to have a majority.
  orderers:
    - orderer:
      type: orderer
      name: orderer1
      org_name: ordorg               #org_name should match one organization definition below in organizations: key
      uri: orderer1.ordorg-net:7050   # Can be external or internal URI for orderer which should be reachable by all peers
      certificate: /home/blockchain-automation-framework/build/orderer1.crt           # Ensure that the directory exists

  # The channels defined for a network with participating peers in each channel
  channels:
  - channel:
    consortium: MyConsortium
    channel_name: AllChannel
    channel_status: new
    orderer:
      name: ordorg
    participants:
    - organization:
      name: org1
      type: creator       # creator organization will create the channel and instantiate chaincode, in addition to joining the channel and install chaincode
      org_status: existing
      peers:
      - peer:
        name: peer0
        gossipAddress: peer0.org1-net:7051 # External or internal URI of the gossip peer
        peerAddress: peer0.org1-net:7051
      ordererAddress: orderer1.ordorg-net:7050             # External or internal URI of the orderer
    - organization:
      name: org2
      type: joiner        # joiner organization will only join the channel and install chaincode
      org_status: existing
      peers:
      - peer:
        name: peer0
        gossipAddress: peer0.org2-net:7051
        peerAddress: peer0.org2-net:7051
      ordererAddress: orderer1.ordorg-net:7050
    - organization:
      name: org3
      type: joiner        # joiner organization will only join the channel and install chaincode
      org_status: new
      peers:
      - peer:
        name: peer0
        gossipAddress: peer0.org3-net:7051
        peerAddress: peer0.org3-net:7051
      ordererAddress: orderer1.ordorg-net:7050
    endorsers:
      name:
      - org1
      - org2
      - org3
      corepeerAddress:
      - peer0.org1-net:7051
      - peer0.org2-net:7051
      - peer0.org3-net:7051
    genesis:
      name: OrdererGenesis

  # Allows specification of one or many organizations that will be connecting to a network.
  # If an organization is also hosting the root of the network (e.g. doorman, membership service, etc),
  # then these services should be listed in this section as well.
  organizations:

    # Specification for the 1st organization. Each organization maps to a VPC and a separate k8s cluster
    - organization:
      name: ordorg
      country: UK
      state: London
      location: London
      subject: "O=Orderer,L=51.50/-0.13/London,C=GB"
      type: orderer
      external_url_suffix: <some endpoint>
      org_status: existing
      ca_data:
        url: ca.ordorg-net:7054
        certificate: file/server.crt        # This has not been implemented in <IP_ADDRESS>

      cloud_provider: azure   # Options: aws, azure, gcp, minikube
      aws:
        access_key: "aws_access_key"        # AWS Access key, only used when cloud_provider=aws
        secret_key: "aws_secret_key"        # AWS Secret key, only used when cloud_provider=aws

      # Kubernetes cluster deployment variables. The config file path and name has to be provided in case
      # the cluster has already been created.
      k8s:
        region: "cluster_region"
        context: "<context>"
        config_file: "/home/blockchain-automation-framework/build/config"

      # Hashicorp Vault server address and root-token. Vault should be unsealed.
      # Do not check-in root_token
      vault:
        url: "<vault-url>"
        root_token: "<vault-login>"

      # Git Repo details which will be used by GitOps/Flux.
      # Do not check-in git_access_token
      gitops:
        git_ssh<EMAIL_ADDRESS>       # Gitops ssh url for flux value files
        branch: "dotest"           # Git branch where release is being made
        release_dir: "platforms/hyperledger-fabric/releases/dotest" # Relative Path in the Git repo for flux sync per environment.
        chart_source: "platforms/hyperledger-fabric/charts"     # Relative Path where the Helm charts are stored in Git repo
        git_push_url: "github.com/sivaramsk/blockchain-automation-framework.git"   # Gitops https URL for git push  (without https://)
        username: "sivaramsk"          # Git Service user who has rights to check-in in all branches
        password: "<git-ops-key>"          # Git Server user password
        email<EMAIL_ADDRESS>              # Email to use in git config
        private_key: "/home/blockchain-automation-framework/build/gitops"          # Path to private key file which has write-access to the git repo

      # Services maps to the pods that will be deployed on the k8s cluster
      # This sample is an orderer service and includes a zk-kafka consensus
      services:
        ca:
          name: ca
          subject: "/C=GB/ST=London/L=London/O=Orderer/CN=ca.ordorg-net"
          type: ca
          grpc:
            port: 7054

        consensus:
          name: raft
          type: broker        #This field is not consumed for raft consensus
          replicas: 4         #This field is not consumed for raft consensus
          grpc:
            port: 9092        #This field is not consumed for raft consensus

        orderers:
        # This sample has multiple orderers as an example.
        # You can use a single orderer for most production implementations.
        # For RAFT consensus, have odd number (2n+1) of orderers for consensus agreement to have a majority.
        - orderer:
          name: orderer1
          type: orderer
          consensus: raft
          grpc:
            port: 7050

    - organization:
      name: org1
      country: GB
      state: London
      location: London
      subject: "O=Org1,OU=Org1,OU=admin,L=51.50/-0.13/London,C=GB"
      type: peer
      external_url_suffix: staging.kluster.emulya.com
      org_status: existing
      cli: enabled
      ca_data:
        url: ca.org1-net:7054
        certificate: file/server.crt

      cloud_provider: azure   # Options: aws, azure, gcp, minikube
      aws:
        access_key: "aws_access_key"        # AWS Access key, only used when cloud_provider=aws
        secret_key: "aws_secret_key"        # AWS Secret key, only used when cloud_provider=aws

      # Kubernetes cluster deployment variables. The config file path and name has to be provided in case
      # the cluster has already been created.
      k8s:
        region: "cluster_region"
        context: "<context>"
        config_file: "/home/blockchain-automation-framework/build/config"

      # Hashicorp Vault server address and root-token. Vault should be unsealed.
      # Do not check-in root_token
      vault:
        url: "<vault-url>"
        root_token: "<vault-login>"

      # Git Repo details which will be used by GitOps/Flux.
      # Do not check-in git_access_token
      gitops:
        git_ssh<EMAIL_ADDRESS>       # Gitops ssh url for flux value files
        branch: "dotest"           # Git branch where release is being made
        release_dir: "platforms/hyperledger-fabric/releases/dotest" # Relative Path in the Git repo for flux sync per environment.
        chart_source: "platforms/hyperledger-fabric/charts"     # Relative Path where the Helm charts are stored in Git repo
        git_push_url: "github.com/sivaramsk/blockchain-automation-framework.git"   # Gitops https URL for git push  (without https://)
        username: "sivaramsk"          # Git Service user who has rights to check-in in all branches
        password: "<git-ops-key>"          # Git Server user password
        email<EMAIL_ADDRESS>              # Email to use in git config
        private_key: "/home/blockchain-automation-framework/build/gitops"          # Path to private key file which has write-access to the git repo

      services:
        ca:
          name: ca
          subject: "/C=GB/ST=London/L=London/O=Org1/CN=ca.org1-net"
          type: ca
          grpc:
            port: 7054
        peers:
        - peer:
          name: peer0
          type: anchor    # This can be anchor/nonanchor. Atleast one peer should be anchor peer.
          gossippeeraddress: peer0.org1-net:7051 # Internal Address of the other peer in same Org for gossip, same peer if there is only one peer
          peerAddress: peer0.org1-net:7051
          certificate: "/home/blockchain-automation-framework/build/ca.crt"
          cli: enabled
          grpc:
            port: 7051
          events:
            port: 7053
          couchdb:
            port: 5984
          restserver:
            targetPort: 20001
            port: 20001
          expressapi:
            targetPort: 3000
            port: 3000
          chaincode:
            name: "fabcar" #This has to be replaced with the name of the chaincode
            version: "1" #This has to be replaced with the version of the chaincode
            maindirectory: "go"  #The main directory where chaincode is needed to be placed
            lang: "golang"  # The language in which the chaincode is written ( golang/java/node )
            repository:
              username: "sivaramsk"          # Git Service user who has rights to check-in in all branches
              password: "<git-ops-key>"
              url: "github.com/sivaramsk/fabric-samples.git"
              branch: develop
              path: "fabric-samples/chaincode"   #The path to the chaincode
            arguments: '\"init\",\"\"' #Arguments to be passed along with the chaincode parameters
            endorsements: "" #Endorsements (if any) provided along with the chaincode

    - organization:
      name: org2
      country: US
      state: New York
      location: New York
      subject: "O=Org2,OU=Org2,OU=admin,L=40.73/-74/New York,C=US"
      type: peer
      external_url_suffix: staging.kluster.emulya.com
      org_status: existing
      cli: enabled
      ca_data:
        url: ca.org2-net:7054
        certificate: file/server.crt

      cloud_provider: azure   # Options: aws, azure, gcp, minikube
      aws:
        access_key: "aws_access_key"        # AWS Access key, only used when cloud_provider=aws
        secret_key: "aws_secret_key"        # AWS Secret key, only used when cloud_provider=aws

      # Kubernetes cluster deployment variables. The config file path and name has to be provided in case
      # the cluster has already been created.
      k8s:
        region: "cluster_region"
        context: "<context>"
        config_file: "/home/blockchain-automation-framework/build/config"

      # Hashicorp Vault server address and root-token. Vault should be unsealed.
      # Do not check-in root_token
      vault:
        url: "<vault-url>"
        root_token: "<vault-login>"

      # Git Repo details which will be used by GitOps/Flux.
      # Do not check-in git_access_token
      gitops:
        git_ssh<EMAIL_ADDRESS>       # Gitops ssh url for flux value files
        branch: "dotest"           # Git branch where release is being made
        release_dir: "platforms/hyperledger-fabric/releases/dotest" # Relative Path in the Git repo for flux sync per environment.
        chart_source: "platforms/hyperledger-fabric/charts"     # Relative Path where the Helm charts are stored in Git repo
        git_push_url: "github.com/sivaramsk/blockchain-automation-framework.git"   # Gitops https URL for git push  (without https://)
        username: "sivaramsk"          # Git Service user who has rights to check-in in all branches
        password: "<git-ops-key>"          # Git Server user password
        email<EMAIL_ADDRESS>              # Email to use in git config
        private_key: "/home/blockchain-automation-framework/build/gitops"          # Path to private key file which has write-access to the git repo

      #Optional for infrastructure configuration files.
      infrastructure:
        target_state: "present"  # Options: present, absent, planned
        refresh_inventory: yes

      services:
        ca:
          name: ca
          subject: "/C=US/ST=New York/L=New York/O=Org2/CN=ca.org2-net"
          type: ca
          grpc:
            port: 7054
        peers:
        - peer:
          name: peer0
          type: anchor    # This can be anchor/nonanchor. Atleast one peer should be anchor peer.
          gossippeeraddress: peer0.org2-net:7051 # Internal Address of the other peer in same Org for gossip, same peer if there is only one peer
          peerAddress: peer0.org2-net:7051
          certificate: "/home/blockchain-automation-framework/build/ca.crt"
          cli: enabled
          grpc:
            port: 7051
          events:
            port: 7053
          couchdb:
            port: 5984
          restserver:
            targetPort: 20001
            port: 20001
          expressapi:
            targetPort: 3000
            port: 3000
          chaincode:
            name: "fabcar" #This has to be replaced with the name of the chaincode
            version: "1" #This has to be replaced with the version of the chaincode
            maindirectory: "go"  #The main directory where chaincode is needed to be placed
            lang: "golang"  # The language in which the chaincode is written ( golang/java/node )
            repository:
              username: "sivaramsk"          # Git Service user who has rights to check-in in all branches
              password: "<git-ops-key>"
              url: "github.com/sivaramsk/fabric-samples.git"
              branch: develop
              path: "fabric-samples/chaincode"   #The path to the chaincode
            arguments: '\"init\",\"\"' #Arguments to be passed along with the chaincode parameters
            endorsements: "" #Endorsements (if any) provided along with the chaincode

    - organization:
      name: org3
      country: US
      state: New York
      location: New York
      subject: "O=Org3,OU=Org3,OU=admin,L=40.73/-74/New York,C=US"
      type: peer
      external_url_suffix: staging.kluster.emulya.com
      org_status: new
      cli: enabled
      ca_data:
        url: ca.org3-net:7054
        certificate: file/server.crt

      cloud_provider: azure   # Options: aws, azure, gcp, minikube
      aws:
        access_key: "aws_access_key"        # AWS Access key, only used when cloud_provider=aws
        secret_key: "aws_secret_key"        # AWS Secret key, only used when cloud_provider=aws

        # Kubernetes cluster deployment variables. The config file path and name has to be provided in case
        # the cluster has already been created.
        k8s:
          region: "cluster_region"
          context: "<context>"
          config_file: "/home/blockchain-automation-framework/build/config"

        # Hashicorp Vault server address and root-token. Vault should be unsealed.
        # Do not check-in root_token
        vault:
          url: "<vault-url>"
          root_token: "<vault-login>"

        # Git Repo details which will be used by GitOps/Flux.
        # Do not check-in git_access_token
        gitops:
          git_ssh<EMAIL_ADDRESS>       # Gitops ssh url for flux value files
          branch: "dotest"           # Git branch where release is being made
          release_dir: "platforms/hyperledger-fabric/releases/dotest" # Relative Path in the Git repo for flux sync per environment.
          chart_source: "platforms/hyperledger-fabric/charts"     # Relative Path where the Helm charts are stored in Git repo
          git_push_url: "github.com/sivaramsk/blockchain-automation-framework.git"   # Gitops https URL for git push  (without https://)
          username: "sivaramsk"          # Git Service user who has rights to check-in in all branches
          password: "<git-ops-key>"          # Git Server user password
          email<EMAIL_ADDRESS>              # Email to use in git config
          private_key: "/home/blockchain-automation-framework/build/gitops"          # Path to private key file which has write-access to the git repo

      #Optional for infrastructure configuration files.
      infrastructure:
        target_state: "present"  # Options: present, absent, planned
        refresh_inventory: yes

      services:
        ca:
          name: ca
          subject: "/C=US/ST=New York/L=New York/O=Org3/CN=ca.org3-net"
          type: ca
          grpc:
            port: 7054
        peers:
        - peer:
          name: peer0
          type: anchor    # This can be anchor/nonanchor. Atleast one peer should be anchor peer.
          gossippeeraddress: peer0.org3-net:7051 # Internal Address of the other peer in same Org for gossip, same peer if there is only one peer
          peerAddress: peer0.org3-net:7051
          certificate: "/home/blockchain-automation-framework/build/ca.crt"
          cli: enabled
          grpc:
            port: 7051
          events:
            port: 7053
          couchdb:
            port: 5984
          restserver:
            targetPort: 20001
            port: 20001
          expressapi:
            targetPort: 3000
            port: 3000
          chaincode:
            name: "fabcar" #This has to be replaced with the name of the chaincode
            version: "1" #This has to be replaced with the version of the chaincode
            maindirectory: "go"  #The main directory where chaincode is needed to be placed
            lang: "golang"  # The language in which the chaincode is written ( golang/java/node )
            repository:
              username: "sivaramsk"          # Git Service user who has rights to check-in in all branches
              password: "<git-ops-key>"
              url: "github.com/sivaramsk/fabric-samples.git"
              branch: develop
              path: "fabric-samples/chaincode"   #The path to the chaincode
            arguments: '\"init\",\"\"' #Arguments to be passed along with the chaincode parameters
            endorsements: "" #Endorsements (if any) provided along with the chaincode

Regarding this statement
"Comparing the script with this document - https://developer.ibm.com/technologies/blockchain/tutorials/cl-add-an-organization-to-your-hyperledger-fabric-blockchain/. If you look at the update_config.json, it has all the orgs added to the Application.groups, where as the add-new-organization.yaml script has only the org that is being added as part of the Application.group."
The BAF code also does the exact same thing.
The channel block is fetched, which already has the information of the existing organizations under the application.groups, and then via the script, we add it to the exisiting block (which we have fetched). Thus after adding the new org details in the application.group, we will also see all the organizations in it.
In the above IBM tutorials, this screenshot (pasted below), mentions the updated config block, which is same in BAF's case as well.

The network.yaml mentioned in this github issue, looks fine to me.

Hi @sivaramsk , I tried to add a new organization in fabric network version 2.2.0 from the latest code in the feature/fabric220 branch, I was not able to reproduce this issue and the addition of a new organization worked fine on the fabric network version 2.2.0 .

Although the invoke functionality is broken as of now, working on the same.


Adapt plugin "drawwhitespace" for Lite-XL

Hello.
The same thing what we had in indentguide and lineguide plugins.
Problem is related to the "subpixel"
@liquidev maybe you can improve this plugin too. Thank you!

Done on the repository https://github.com/franko/lite-plugins, commit:
https://github.com/franko/lite-plugins/commit/225f21ea99c28d2c0f816b3c5cdf879b95248d54

I have noticed that while the drawwhitespace plugin is really nice it slows down the editor.
So I got an idea and I made in the branch
https://github.com/franko/lite-xl/tree/font-codepoint-replacements
a new API to replace, for a given font face, one unicode codepoint with another.
So it works like in this code snippet:
style.code_font = renderer.load.font(...)
style.code_font:add_replacement(" ", "·", style.syntax.comment)
style.code_font:add_replacement(" ", "»", style.syntax.comment)

Essentially we say to replace one unicode with another in a given font face and we can give an optional replacement color that is used only when a replacement is made. In addition the replacement works by using the width of the original codepoint glyph. This latter thing is somewhat ad-hoc but sort of make sense.
I may include these modifications with the next release to speed-up the drawwhitespace plugin.

This sounds like something that would fit better in the syntax highlighter. I don't think tightly coupling the font/text rendering API with syntax highlighting is a particularly good idea from an architectural perspective.

@liquidev, I see your point.
Actually before this I explored a solution based on syntax highlighter. It worked except that it confused the detectindent plugin. This latter no longer sees spaces but only dots so it was unable to compute indentations. In addition it was still slow.
The problem is that if you generate with the syntax highlighter a set of different strings it can interfere with other plugins or other core functions because just because the content is different.
It is more safe to act only when the text is rendered on the screen, at the very end of the pipeline, without modifying the strings composing the text. We may think to this like a sort of codepoint "shader" in the pipeline of text rendering.

If the override specifies the color like as an argument, I don't think that would work very well with theme reloading, unless you call add_replacement every frame which feels suboptimal.

@liquidev Finally I agree with you. It violates some basic assumptions because it acts by modifing the font and in addition it add color/style information straight into the font which is also violating the separation of concerns.
So, I cannot merge this in the master branch but I will keep the branch around. I have some ideas about how to implement this without violating the principles of the applications.
Thank you for your advice!


[BUG] Register Form only working on port 443 or 80 not on 3000

Describe the bug
The registration do not work. Always get the message "Cannot create a new account, the user may already exist"

New Demo instance from Shopware
Canary and Stable version of PWA
Open PWA and click register
Fill out the form (tried with various data)

Additional context

Docker ddev setup
Demo Shopware developer Edition
PWA Integration 0.1.3
Canary and Stable version of PWA

Request
curl 'https://pwa.ddev.site/store-api/v1/account/register' \
  -H 'authority: pwa.ddev.site' \
  -H 'accept: application/json, text/plain, */*' \
  -H 'sw-access-key: SWSCAELOSVLRC1ZAEMTKAKPMTG' \
  -H 'sw-context-token: YWdofdtbysvt25x62PVMEpDDvRW3WTXZ' \
  -H 'sw-language-id: 2fbb5fe2e29a4d70aa5854ce7ce3e20b' \
  -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36' \
  -H 'content-type: application/json;charset=UTF-8' \
  -H 'origin: https://pwa.ddev.site:3000' \
  -H 'sec-fetch-site: same-site' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-dest: empty' \
  -H 'referer: https://pwa.ddev.site:3000/' \
  -H 'accept-language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7' \
  --data-binary '{"firstName":"Beard","lastName":"Coder","email":"beardcoder@gmail.com","password":"1234567890ß","salutationId":"9c249646be1e4a84b3ef1b08c08c4411","storefrontUrl":"https://pwa.ddev.site:3000","billingAddress":{"firstName":"Beard","salutationId":"9c249646be1e4a84b3ef1b08c08c4411","lastName":"Coder","city":"Hopfenstadt","street":"Bierstraße 5","zipcode":"96385","countryId":"fbbded156cb94f34a640dae2fbc6fb43"}}' \
  --compressed

Response
{
    "errors": [
        {
            "code": "VIOLATION::NO_SUCH_CHOICE_ERROR",
            "status": "400",
            "title": "Constraint violation error",
            "detail": "The value you selected is not a valid choice.",
            "source": {
                "pointer": "\\/storefrontUrl"
            },
            "meta": {
                "parameters": {
                    "{{ value }}": "\\u0022https:\\/\\/pwa.ddev.site:3000\\u0022",
                    "{{ choices }}": "\\u0022https:\\/\\/pwa.ddev.site\\u0022"
                }
            }
        }
    ]
}

The problem is the Port. You can not set the port in the sales chanel.

The registration works on https://shopware-pwa-canary.storefrontcloud.io/

It does not work on https://shopware-pwa.storefrontcloud.io/

Yes if you not working with the port from the documentation. You can not set a port in a saleschannel.


Read marker: in preview mode, landscape to portrait transition is buggy

To reproduce:

Be in preview mode, (after you hit the "Jump to first unread message" banner)
Put the device in landscape mode or portrait depending of the original position

The transition is buggy. This is even more flagrant with an older device, iPhone 5c for example.

@jeangb: I cannot reproduce this issue

@giomfo me neither since the last version


Scylla 2.0 dashboards

With 2.0 Scylla metrics have an IP/instance name attached to the mouse over information, for the collcetd information (Network and disk) that information is missing see below examples:

The node_exporter metrics does not use the same hostname notation is scylla metrics
@amnonh can we fix it using tags?

related to #244

@tzach I think we can close that

@tzach


[enhancement] adds support of _op_type for bulk operations of destinations

Description
Same as #5471 but for the integration destination.
Adds support for the  bulk operations with Data streams as they require this as they are Append-only indexes
https://elasticsearch-py.readthedocs.io/en/v8.15.1/helpers.html#bulk-helpers
How Has This Been Tested?

[X] Tested locally

Checklist

[X] The PR is tagged with proper labels (bug, enhancement, feature, documentation)
[X] I have performed a self-review of my own code
[X] I have added unit tests that prove my fix is effective or that my feature works
[X] I have commented my code, particularly in hard-to-understand areas
[X] I have made corresponding changes to the documentation

cc:
@wangxiaoyou1993

@wangxiaoyou1993 If you have the chance could you please also have a look at this PR

yes, taking a look now


Bugfix: set commitish to HEAD on binder

I'm not being nosy, I promise!

Thanks! I haven't tried, I'm not sure the binder works currently


Allow the listening port to be configurable.

Currently, the rsyslog port is hard-coded via template to 514.  It should be configurable via role variables.

Did you set the following to true? rsyslog_config: false

No; I want to configure rsyslog via this module, but I also want to set the port to something other than 514.  I'll submit a PR shortly.

It is already available in the defaults/main.yml so maybe I am confused on the issue? :)


Updated french language

The french traduction was a little bit old, with missing items and block translation. I added that

Thank you very much! Merging now.


Implement a Data node subscription

Implement a data node subscription where a callback is called whenever a data node is written.
The subscription should be very similar to the scenario subscription.

OBSOLETE: The notifier already allows this featrue.


dasview not running

Hello,
I have been trying to make the dasview run with the suggeste command of "dasview /path/to/dataset" without success. I use the path to the set and its not working. Attached screenshot to show the issue and result.

This same path to the dataset I have being using for running the pioneer.das.api usage example and it worked fine.
Can someone give me a hint on what to do?
Thanks in advance, Esteban

Hi,
Try putting Master AMM between quotation marks like this: "Master AMM"